POST kullanarak jQuery AJAX çağrısı sadece $ _GET ile alınır?

5 Cevap php

Ben çalışan Aşağıdaki kodu vardır:

<script type="text/javascript">
$(document).ready(function() {
    // Initialise the table
    $('#table_1').tableDnD({
    onDrop: function(table, row) {
    $.tableDnD.serialize();

    $.ajax({
     type: "POST",
     url: "test.php?"+$.tableDnD.serialize(),
     data: "",
     success: function(html){
       alert("Success");
     }
    });
    }
});
});
</script>

Test.php veri gönderme:

<?php
$table_1[] = $_GET['table_1'];
$i = 0;
if(!empty($table_1[0])){
    foreach($table_1 as $value) {
        foreach($value as $row){
            $i++;
            mysql_query("UPDATE mytable SET tableOrder='$i' WHERE id = '$row'");
        }
    }
}
?>

Gördüğünüz gibi table_1 dizi $ _GET kullanarak veri alır, ama bu ajax kod biz POST ile yolluyorlar diyor. Ben $ _GET için $ _POST değiştirirseniz artık çalışır. Neden bu?

5 Cevap

Eğer $_POST okuduğunuzda, yerine URL sorgu dizesi içinde data değerleri geçmelidir.

JavaScript kodu aşağıdaki şekilde değiştirmek olurdu:

$.ajax({
 type: "POST",
 url: "test.php",
 data: $.tableDnD.serialize(),
 success: function(html){
   alert("Success");
 }
});

Sonra yapmanız mümkün olacaktır:

<?php
$table_1[] = $_POST['table_1'];
?>

Gibi Mike Sherov altında bir açıklamada belirtildiği çünkü orignal kod çalışıyordu, URL sorgu dizesi geçirilen herhangi bir veri her zaman $_GET, ne olursa olsun HTTP fiil veri göndermek için kullanılan ile ulaşılabilir .

Eğer (bir GET yolu türüdür) URL parametre koymak çünkü. POST parametresini kullanmak için, veri alanına koymak gerekir. Bu gibi.

<script type="text/javascript">
$(document).ready(function() {
    // Initialise the table
    $('#table_1').tableDnD({
    onDrop: function(table, row) {
    $.tableDnD.serialize();

    $.ajax({
     type: "POST",
     url: "test.php"+,
     data: "" + $.tableDnD.serialize(),
     success: function(html){
       alert("Success");
     }
    });
    }
});
});
</script>

$.tableDnD.serialize() geçerli bir sorgu dizesi ürettiğini varsayarsak.

Umarım bu yardımcı olur.

Ben bir sorgu dizesi ile POST URL bina ve tableDnD sizin URL değerleri ekliyoruz çünkü düşünüyorum.

the documentation ve "Verileri Sunucuya gönderme özellikle" bölümüne bakın.

url: "test.php?"+$.tableDnD.serialize(),

Bu bölüm, bu gibi kullanmak için gereken bir get isteği oluşturur:

$.ajax({
     type: "POST",
     url: "test.php",
     data: $.tableDnD.serialize(),
     success: function(html){
       alert("Success");
     }
    });

Script hiçbir DATA Zati POST yöntemi gönderir ve reklam hedef dosya GET veri ile bir şeydir, PHP sadece tarihi geçti yalak URL olarak görüyor.

Sen veri seçeneği veri koymak gerekir. ;)