2017-01-23 4 views
1

Ich versuche verzweifelt, mehrere POST-Variablen über AJAX zu senden, aber einfach nicht schaffen, die Formatierung richtig zu bekommen ... Problem ist, dass ich sowohl eine fest codierte/geschrieben action=problem_lookup Variable und ein dynamisches Feld Eingang als $(this).val und kippe verwalten nur beide in eine Datenkette zu bekommen ...AJAX - mehrere POST-Daten senden

dies gut funktioniert:

data: 'problem=' + $(this).val(), 

Dies gilt nicht:

data: { action: 'problem_lookup' , problem: $("problem").val() }, 
data: { action: 'problem_lookup' , problem: $(this).val() }, 
data: { action: problem_lookup, problem: $(this).val() }, 

Ich habe zahlreiche Formate aus anderen Threads ausprobiert und das offizielle jquery-Handbuch angeschaut, aber das scheint mir nicht klar zu werden. Jede Hilfe wird geschätzt.

EDIT:

vollständige Skript unten, versucht, die bisher veröffentlicht Lösungen aber keinen Erfolg. $("problem") ist ein <select> Feld (mit Select2 läuft) daher sollte mich nicht so viel Frustration verursachen, zumal der ursprüngliche Ansatz mit data: 'problem=' + $(this).val(), gut funktioniert.

$(function() { 
    $('#problem').change(function() {      // on change in field "problem" 

    var data = { 
     action: 'problem_lookup', 
     problem: $("problem").val() 
    } 

     $.ajax({           // launch AJAX connection 
      type: 'POST',         // via protocol POST 
      url: 'ajax.php', 
      //data: 'problem=' + $(this).val(),    // send $_POST string 
      //data:"{'action':'"+action+"','problem':'"+$(this).val()+"'}", 
      //data:"{'action':'problem_lookup','problem':'"+$(this).val()+"'}", 
      //data: { action: 'problem_lookup' , problem: $("problem").val() }, 
      //data : data_string, 
      data: $.param(data), 
      dataType: 'json',        // encode with JSON 
      success: function (data) 
      { 
       // do something 
      }, 
     }); 
    }); 

}); 
+0

Wenn Sie mehrere Werte in 'Daten' übergeben möchten, übergeben Sie es als Array. –

Antwort

1

Ein Problem ist in dem

  $("problem") 

JQuery Anruf.

If.problem ist eine CSS-Klasse versuchen, mit

  $(".problem") 

, wenn das Problem ein CSS-ID ist mit

 $("#problem") 

Für Arrays von Objekt veröffentlichen versuchen können Sie die Daten als ein Objekt bauen Arrays enthält, Ändern Sie ein wenig Ihre Struktur. So etwas wie dieses

Var obj={}; 
obj.postData=[]; 
obj.postData.push(/*your first object here*/); 
... 
obj.postData.push(/*your n-th object here*/); 


    $.ajax({  
     ..... 
     data:obj; 
     ...... 
    }); 
+0

es ist ein Auswahlfeld mit einer' id', daher probierte das '$ (" # problem ")' Ansatz aber auch kein Ergebnis ... – Armitage2k

+0

ironischerweise war das '# Problem' das Problem ...schaltete es auf eine Array-Submission und die Dinge funktionierten plötzlich. Danke vielmals! – Armitage2k

+0

:) Gern geschehen – Massimo

1

Versuchen Sie, die Formdata()FormData.

var data = new FormData(); 
data.append('action', value); 
... 
1

Sie benötigen eine Datenvariable wie diese erste angeben:

var data = { 
    action: 'problem_lookup', 
    problem: $("problem").val() 
} 

In AJAX Ihre Daten serialisiert $.param verwenden,

data: $.param(data), 

Hinweis: Twice prüfen wenn $("problem").val() korrekt ist. Wenn problem eine Klasse ist, müssen Sie diese $(".problem").val() angeben oder wenn es ID ist, $("#problem").val()

+0

tat all das, aber keine Zigarre. '# problem' ist eine ID, ich überprüfte die Syntax und ihre korrekte, trotzdem bekomme ich kein Ergebnis zurück ... – Armitage2k