0

我对 ajax 很陌生,我无法解决这个问题,也找不到其他讨论它的话题。我要做的是用ajax 将一个数组发送到一个php 脚本。
该数组是一个关联数组[index][value]。问题是,一旦我将数组发送到 php,它看起来就像一个单维数组。换句话说,一个例子:
如果数组是:["apple", "pear", "orange"]
应该是:array[0] 打印 "apple"

但是在 php 中,该数组仅包含一个元素,即所有字符串的串联。因此,如果我打印 array[1],我将获得“p”、array[4]“e”等。
我该如何解决?

预先感谢您的帮助。

var items = new Array();

代码 AJAX 脚本:

    $.ajax({

      type: "POST",
      url: "calculate.php",

      data: "items=" + items, 
      dataType: "html",

      success: function(msg)
      {
        var response = jQuery.parseJSON(msg);
        $('#second_results').html(response.output); 
      },
      error: function()
      {
        alert("Failed"); 
      }
    });

PHP:

$items = $_REQUEST["items"];

4

4 回答 4

0

你在这里有几个选择。其中,我介绍了其中的 2 个。

1)

逗号分隔参数并在逗号处拆分。

// ...
data: "items=" + item1 + "," + item2 + "," item3,
// ...

$items = explode(',', $_REQUEST['items']);

2)

使用另一种表示法:

// ...
data: "items[0]=" + item1 + "&items[1]=" + item2 + "&items[2]=" + item3,
// ...

$items = $_REQUEST['items'];

虽然我也没有测试过,但它应该可以正常工作。:)

您也可能想看看:Parse query string into an array to let php handle the correct conversions。

于 2013-03-25T11:30:58.020 回答
0

这里还有多种方法:将数组传递给 $.ajax() 中的 ajax 请求。这里还有一个很好的注释示例http://www.islandsmooth.com/2010/04/send-and-receive-json-data-using-ajax-jquery-and-php/

于 2013-03-25T11:36:54.197 回答
0

在 ajax 调用的数据中传递这个:

        var a = {};
        a["key1"] = "val1";
        a["key2"] = "val2";
        a["key3"] = "val3";
$.ajax({

  type: "POST",
  url: "calculate.php",

  data: a ,
  dataType: "html",

  success: function(msg)
  {
    var response = jQuery.parseJSON(msg);
    $('#second_results').html(response.output); 
  },
  error: function()
  {
    alert("Failed"); 
  }
});

在 PHP 方面:

 if($_SERVER["REQUEST_METHOD"]=="POST")
{
   foreach($_POST as $key=> $val){
   echo $key."and".$val;
   }
    die();
}
于 2013-03-25T11:38:30.983 回答
0
$.ajax({

  type: "POST",
  url: "calculate.php",

  data: {items:items}, 
  dataType: "html",

  success: function(msg)
  {
    //your code if call succeeds
  },
  error: function()
  {
    //alert("Failed"); 
  }
});

请注意,您用来传递数组的方式不正确,请去掉 + 和 = 符号并使用 : 代替,希望对您有所帮助!

于 2018-02-22T11:39:16.990 回答