簡體   English   中英

使用 Ajax 將數組發送到 PHP 腳本

[英]Send array with Ajax to PHP script

我有由函數.push制作的數組。 在數組中是非常大的數據。 將它發送到 PHP 腳本的最佳方式是什么?

   dataString = ??? ; // array?
   $.ajax({
        type: "POST",
        url: "script.php",
        data: dataString, 
        cache: false,

        success: function(){
            alert("OK");
        }
    });

腳本.php:

  $data = $_POST['data'];

  // here i would like use foreach:

  foreach($data as $d){
     echo $d;
  }

最好的方法是什么?

將您的數據字符串編碼為 JSON。

dataString = ??? ; // array?
var jsonString = JSON.stringify(dataString);
   $.ajax({
        type: "POST",
        url: "script.php",
        data: {data : jsonString}, 
        cache: false,

        success: function(){
            alert("OK");
        }
    });

在你的 PHP

$data = json_decode(stripslashes($_POST['data']));

  // here i would like use foreach:

  foreach($data as $d){
     echo $d;
  }

筆記

當您通過 POST 發送數據時,它需要作為一個鍵值對。

因此

data: dataString

是錯的。 而是這樣做:

data: {data:dataString}

 dataString = [];
   $.ajax({
        type: "POST",
        url: "script.php",
        data:{data: $(dataString).serializeArray()}, 
        cache: false,

        success: function(){
            alert("OK");
        }
    });

http://api.jquery.com/serializeArray/

如果您一直在嘗試發送一維數組並且jquery 正在將其轉換為逗號分隔值 >:(然后按照下面的代碼將實際數組提交php而不是所有逗號分隔的公牛**它。

假設您必須附加一個名為myvals的單維數組。

jQuery('#someform').on('submit', function (e) {
    e.preventDefault();
    var data = $(this).serializeArray();

    var myvals = [21, 52, 13, 24, 75]; // This array could come from anywhere you choose 
    for (i = 0; i < myvals.length; i++) {
        data.push({
            name: "myvals[]", // These blank empty brackets are imp!
            value: myvals[i]
        });
    }

jQuery.ajax({
    type: "post",
    url: jQuery(this).attr('action'),
    dataType: "json",
    data: data, // You have to just pass our data variable plain and simple no Rube Goldberg sh*t.
    success: function (r) {
...

當你這樣做時,現在在php里面

print_r($_POST);

你會得到 ..

Array
(
    [someinputinsidetheform] => 023
    [anotherforminput] => 111
    [myvals] => Array
        (
            [0] => 21
            [1] => 52
            [2] => 13
            [3] => 24
            [4] => 75
        )
)

請原諒我的語言,但是有很多Rube-Goldberg解決方案散布在整個網絡上,特別是在 SO 上,但它們都不是優雅的,也沒有解決通過 ajax post 將一維數組實際發布到php的問題 不要忘記傳播這個解決方案。

jQuery ajax()函數中的數據接受匿名對象作為其輸入,請參閱文檔 所以你正在尋找的例子是:

dataString = {key: 'val', key2: 'val2'};
$.ajax({
        type: "POST",
        url: "script.php",
        data: dataString, 
        cache: false,

        success: function(){
            alert("OK");
        }
    });

您也可以自己編寫 POST/GET 查詢,例如key=val&key2=val2 ,但您必須自己處理逃避,這是不切實際的。

dataString 表明數據格式為字符串(並且可能由字符分隔)。

$data = explode(",", $_POST['data']);
foreach($data as $d){
     echo $d;
}

如果 dataString 不是字符串而是實際上是數組(您的問題所指的),請使用 JSON。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM