2009-05-08 13 views
0

Ich versuche, eine Gruppe von Arrays mit der jQuery Post-Methode zu buchen, aber ich habe Probleme, den Wert der Arrays zu bekommen. Wie kann ich die Werte des Arrays erhalten, die ich gesendet habe? Wenn jemand mir helfen könnte wäre ich dankbar ....Array von jQuery kann nicht gesendet werden

Hier ist das, was ich getan habe:

$(document).ready(function() 
     { 
      $("#submit_info").click (
       function() 
       { 
        var batchArr= new Array(); 
        batchArr=arrPush('batch'); 
        var facultyArr= new Array(); 
        facultyArr=arrPush('faculty'); 
        var levelArr= new Array(); 
        levelArr=arrPush('level'); 
        var sectionArr= new Array(); 
        sectionArr=arrPush('section'); 
        var shiftArr= new Array(); 
        shiftArr=arrPush('shift'); 

        $.post("server_side/college_info_insert.php",{ 
          batchArr:batchArr, 
          facultyArr:facultyArr, 
          levelArr:levelArr, 
          sectionArr:sectionArr, 
          shiftArr:shiftArr 
         }, function(data) 
         { 
          alert(data); 
         }); 
       } 
      ); 

      function arrPush(opt) 
      { 
       var Arr= new Array(); 
       Arr.push($("#"+opt+"_1").val()); 
       var count= $("#"+opt).val(); 
       var i=0; 
       for(i;i<=count;i++) 
       { 
        if(i==0) 
        { 
         Arr.push($("#txt"+opt).val()); 
        } 
        else 
        { 
         Arr.push($("#txt"+opt+i).val()); 
        } 
       } 
       return Arr; 
      } 
     } 
    ); 

Wie kann ich die Array-Werte in der nächsten Seite „college_info_insert.php“ bekommen ??

Antwort

0

nicht sicher, ob ich die Frage verstanden würde aber nicht so etwas wie dieses Werk

if (isset($_POST['batchArr'])) { 
    $batchArr = $_POST['batchArr']; 
    // Then populate your html here e.g 
    echo $batchArr[0]; 

}

+0

Entschuldigung hat nicht funktioniert, aber danke für die Ans;) – jarus

1

in Ordnung, so ist dies eigentlich ein wirklich weit verbreitetes Problem. Es ist unklar, dass Sie nicht einfach ein Array aus JavaScript in PHP senden und es erkennen lassen können.

Das Problem ist, dass PHP nicht in mehrere Werte aus einer POST-Anfrage lesen kann - in der Regel erfordern solche Dinge den PHP-Autor, Klammern wie zu verwenden: varname[].

Also, im Grunde müssen Sie Variablen als Zeichenfolgen senden. Mit JSON können Sie auch komplizierte Objekte als Strings an PHP senden, indem Sie einen einzelnen Variablennamen verwenden. Normalerweise würden Sie JSON.stringify oder etwas in diesen Zeilen verwenden - aber wenn Sie ein einfaches Array haben, brauchen Sie es vielleicht nicht einmal.

Hier ist ein vollständiges Beispiel für das Problem/Lösung gefunden jquery mit und $ .post:

<?php 
print_r($_POST); 
?> 

Und in einer separaten Datei (:

asume Sie myurl.php eine Datei haben oder die Konsole), versuchen Sie:

var myarray = Array('some','elements','etc'); 
var mydata = {postvar1: 'string', postvar2: myarray}; 
$.post('myurl.php', mydata, function(response) { 
    alert("response: " + response); 
}); 

das funktioniert nicht! Das Ergebnis ist, dass postvar2 nur "etc" enthält.

Die Lösung erzwingt das Array in eine JSON-Zeichenfolge, die aus PHP decodiert werden kann.

var myarray = Array('some','elements','etc'); 
var json_array = $.map(myarray,function(n) { 
    return '"'+n+'"'; 
}); 
var mydata = {postvar1: 'string', postvar2: '['+json_array+']' }; 
$.post('myurl.php', mydata, function(response) { 
    alert("response: " + response); 
}); 

ON PHP Seite müssen Sie jetzt verwenden: json_decode($_POST['myarray']); Ihre Ergebnisse in der richtigen Anordnung zu erhalten.

Beachten Sie, dass dieses Beispiel sehr einfache Zeichenfolgen oder Zahlen in Ihrem Array annimmt. Wenn Sie komplexe Objekte haben, müssen Sie eine JSON.stringify-Funktion verwenden, die sich um zusätzliche Anführungszeichen, Sonderzeichen usw. kümmert.

Verwandte Themen