从jQuery到JSON到PHP

即使我回复,我的问题仍然被抛弃,所以我将重新制作我的问题,希望有人可以看到我的错误并帮助我。 我会尽量做到尽可能彻底。

第1步:我有一个名为divisionsLarge的数组,格式如下:

divisionsLarge = [{ "car":"Toyota", "color":"blue", "numberTires":"four" }, { "car":"Honda", "color":"red", "numberTires":"four"}, etc. etc. ... ] 

(这个数据是虚构的,但是这个过程在某个地方是错误的(也忽略了numberTires被存储为字符串而不是int的事实,它是虚构的人:P)

无论如何,我有92个上述条目,都有相同的键:汽车,颜色和numberTires。

现在,我使用以下函数循环遍历数组,以便使用car和numberTires键构建一个数组:

 var divisions = []; for (var i = 0; i < divisionsLarge.length; i++) { if(divisionsLarge[i].numberTires != "two"){ var obj = { "car": divisionsLarge[i].car, "numberTires": divisionsLarge[i].numberTires}; divisions.push(obj);} } 

好的,在这一点上,我认为一切都很好。 如果我在FireBug中使用控制台并键入divisions[0]我会得到一个漂亮的对象,例如,

 Object { car = "Toyota", numberTires = "four"} 

(我认为汽车和numberTires条目周围仍有"" ,这就是FireBug显示对象的方式,我可能错了)

现在这就是我需要帮助的地方。 我创建了更多的.ajax查询。 我使用过JSON.stringified,我没有使用JSON.stringified,我使用过json_decode(),我刚刚完成了print_r($ _ POST)…我做了很多事情,我完全无法做到分析什么是影响什么,以便诊断问题可能是什么。 看来我的.ajax POSTS可能是错的,看来我的PHP可能是错的。 以下是我非常感谢您回答的问题:

1) divisions数组是由javascript创建的JSON还是以易于转换为JSON的格式创建的?

2)我的AJAX呼叫需要什么? 我已经尝试了很多AJAX调用,我不知道什么是正确/错误。 另外,请使用divisions而不是我上面提供的数组的片段,因为divisions数组是由divisions包含的内容动态生成的。

3)我的divisions.php PHP文件需要看起来像什么? 现在它周围有一个HTML骨架,其中标签引用了divisionsLarge.jsdivisions.js [这些需要在一个.js文件中吗?]我看过空白页面和Array()这么长,以至于我现在甚至怀疑PHP文件的其余部分。

4)如何获得第一个索引的颜色值? 这看起来很简陋,但我看到的大多数例子只是查询一个对象的数组,例如echo $_POST["color"] ,但我有多个color条目,所以我不知道如何只询问第一个一。 我想知道这一点主要是因为我在测试数组是否正常工作方面取得了如此糟糕的成功 – 我对print_r($_POST)var_dump($json)失去了信心。

好的,首先是你的问题。 那么代码:

1.-除法不被视为JSON,它只是一个对象数组。 使用JSON.stringify()可以轻松地将所有javascript对象转换为JSON; 看下面的代码。

2.-看下面的代码。

3.-我不确定你的PHP需要什么样的处理。 下面的代码假定您将其发布到另一个页面,您将在其中执行一些处理并输出一些内容,您可以在completefunction中使用它。

4.-看下面的代码。

我想这就是你想要做的:

使用Javascript

 divisionsLarge = [{ "car":"Toyota", "color":"blue", "numberTires":"four" }, { "car":"Honda", "color":"red", "numberTires":"four"}]; var divisions = []; for (var i = 0; i < divisionsLarge.length; i++) { if(divisionsLarge[i].numberTires != "two"){ var obj = { "car": divisionsLarge[i].car, "numberTires": divisionsLarge[i].numberTires}; divisions.push(obj);} } //I am just going to send one of your array elements as a JSON object. var postData = JSON.stringify(divisions[0]); var url = "url where you want to post your data"; $.ajax(url, { type: "POST", data: { "jsonBeingSent" : postData }, success: function(data) { //Do whatever you need to do with your PHP output here. //If you are using something like my php sample then you will be receiving a JSON object(s) } }); 

现在,在你的PHP上你可能想要这样的东西:

  ... // [numberTires] => ... // } //So you could access the car value like this echo $receivedData->{'car'}; //Do your processing and then, if you are using an array or object you can use `json_encode()` to output your data. ?> 

希望有所帮助。