如何使用Ajax Post向JSON发布JSON中的对象数组?

时间:2012-01-02 20:59:19

标签: php javascript ajax json post

我可以使用Ajax Post成功将数组发布到PHP,但是我希望扩展此功能以发布一个对象数组而不是一个值数组...我很难找到如何执行此操作的明确示例。

以下是我如何从jQuery / Javascript客户端脚本发布值数组:

var placesfortrip = {};
placesfortrip["place"+counter] = inputVal;

//note counter is an int that gets incremented for each value
//inputVal is a string with the new value to be added 

 var inputVal = jQuery("#edit-location").val();  
          jQuery.ajax({
            url: "/createtrips/updateitin",
            type: 'POST',
            data: placesfortrip,
            dataType: 'json'
            });

然后在PHP方面我读了这样的数据:

 $citynames = array();

    foreach ($_POST as $key=>$value) {

    $citynames[$key]= $value;

    }

如何修改上述内容以发布对象数组而不是值? 我特别感到困惑的是如何从PHP端读取对象数组。

3 个答案:

答案 0 :(得分:1)

您可以尝试使用此代码将数据发送到php文件

 var status  = document.getElementsByName("status")[0];
    var jsonObj = []; //declare array

    for (var i = 0; i < status.options.length; i++) {
        jsonObj.push({id: status.options[i].text, optionValue: status.options[i].value});
    }

然后替换此行

data: placesfortrip,

data: jsonObj,

对于其他帮助,您也可以帮助这个

大多数流行的JavaScript框架都包含JSON实用程序功能。例如,jQuery有一个直接调用url并将JSON结果作为对象加载的函数:http://docs.jquery.com/Getjson

但是,您可以从json网站获取开源JSON解析器和字符串:

https://github.com/douglascrockford/JSON-js/blob/master/json2.js

然后,只需包含代码并在数组上使用JSON.stringify()方法。

答案 1 :(得分:0)

您应该能够将对象发布到服务器,并使用json_decode($ _ POST ['some_key“])将其用作服务器上的数组/对象

答案 2 :(得分:0)

您也可以忘记json并按原样发布数组。例如。在JavaScript中:

var slideShowImages = new Array();
var image = {};
image['id'] = 1;
image['title'] = "Title 1";
slideShowImages[0] = image;

等。用javascript填充整个数组。 然后Ajax调用为:

$.ajax({
  type : 'POST',
  url: BASE_REQUEST_URL + 'apiModule/performAddEditSlideShow',
  cache: false,
  data: {
    images: slideShowImages
  }
});

然后在PHP中,只需循环遍历它:

$images = $_POST['images'];
foreach($images as $image) {
  $title = $image['title'];
}