2017-05-08 4 views
-2

Ich versuche, mehrere JSON-Objekte über Ajax zu senden.senden mehrere JSON-Objekte über Ajax

Meine Objekte (aus mehreren Formen erstellt) sind unten;

Wenn der Ajax sendet den JSON leer. Wenn ich jedoch eines der JSON-Objekte suche, enthält es Werte. Ich denke, das Problem scheint zu sein, wenn ich Multi-Layer-Objekte erstellen.

Ich muss auch verstehen, wie ich auf die Objekte in meinem Controller zugreifen kann.

Wäre es so etwas wie: data.dataFormOne.title.

var dataFormOne = ''; 
var dataFormTwo = ''; 
var dataFormThree = ''; 

$("#formone").submit(function(e){ 
    var title = $('select[name="Title"]').val();  
    dataFormOne = {firstname: firstname}; 
});     

$("#formtwo").submit(function(e){ 
    var address = $("#address").val();;  
    dataFormTwo = {address: address}; 
});         

$("#formtwo").submit(function(e){ 
    var country = $("#country").val();; 
    dataFormThree = {country: country}; 
});       

function sendData() { 
    var data = { 
    formone: dataFormOne, 
    formtwo: dataFormTwo, 
    formThree: dataFormThree, 
    }; 

    $.ajax({ 
    type: "POST", 
    url:URL, 
    dataType: "json", 
    data: data , 
    cache: false, 
    success: function (data) { 
     if (data.result) { 
     console.log(data.result); 
     } else { 
     alert("There has been an error\nPlease make sure you are logged in."); 
     } 
    }, 
    complete: function() {} 
    });     
} 
+0

1. Sie haben zwei '# formtwo' im Code .. Sollte es einer sein? 2. Rufen Sie in der Callback-Funktion submit die Funktion sendData auf? – Santosh

Antwort

-1

traditionell auf true gesetzt in Ihrer Ajax-Konfiguration und wie diese

traditional : true, 
data:{formone: dataFormOne,formtwo: dataFormTwo,formThree: dataFormThree} 
+0

Hallo Hassan. Ich versuchte es. es hat nicht funktioniert –

+0

Welchen Fehler bekommen Sie? –

-1

ich erstellt habe aus Ihrer Frage ein Beispiel-Code senden. Es gibt ein paar Dinge, die Sie vermisst haben (wie sendData nicht bei jedem Submit aufrufen), auch mehrere Formulare auf einer einzelnen Seite sind nicht "erlaubt" (Sie können es immer noch verwenden, nur darauf hinweisen). Auch das Datenobjekt wurde neu formatiert. Sobald Sie dieses Objekt auf Ihrem Controller erhalten, können Sie leicht nach den benötigten Feldern suchen.

Sobald Sie dieses Beispiel einen Blick auf die Konsole für ein Beispiel ausgeführt werden, was zu dem Controller geschrieben werden zurück (Sie müssen die Ajax-Post zurückrufen Kommentar-, damit es funktioniert)

Arbeits Geige: https://jsfiddle.net/HappyiPhone/wfkggtzm/1/

var dataFormOne = ''; var dataFormTwo = ''; var dataFormThree = '';

$("#formone").submit(function(e){ 
      dataFormOne  = {firstname: firstname}; 
      sendData(e); 
     });     

      $("#formtwo").submit(function(e){ 
      var address = $("#address").val();;  
           console.log($("#formtwo").serialize()); 
      dataFormTwo  = {address: address}; 
      sendData(e); 
     });         

      $("#formtwo").submit(function(e){ 
      var country = $("#country").val();;  
      dataFormThree  = {country: country}; 
      sendData(e); 
     });       



     function sendData(e) { 

      var data  = {dataFormOne, 
          dataFormTwo, 
          dataFormThree, 
          }; 
        console.dir(data); 
     e.preventDefault(); 
     /* 
     $.ajax({ 
        type: "POST", 
        url:URL, 
        dataType: "json", 
        data: data , 
        cache: false, 
        success: function (data) 
        { 
         if (data.result) 
         { 
         console.log(data.result); 
         } 
         else 
         { 
          alert("There has been an error\nPlease make sure you are logged in."); 
         } 
        }, 
        complete: function() {} 
       });     

       */ 
}