0

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

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

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

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

无论如何,我有 92 个上述条目,它们都具有相同的键:car、color 和 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"}

(我认为""周围还有 car & 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数组是由divisionsLarge.

3) 我的divisions.phpPHP 文件需要是什么样的?现在它周围有一个 HTML 骨架,带有<script></script>引用的标签,divisionsLarge.js并且divisions.js[这些需要在一个.js文件中吗?] 我已经看到了空白页,而且Array()很长时间以来我什至怀疑 PHP 文件的其余部分。

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

4

1 回答 1

1

好的,首先你的问题。然后代码:

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

2.-看下面的代码。

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

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 上,你可能想要这样的东西:

<?php

   //You may want to do some checking about the sender, and so on.
   $receivedData = json_decode($_POST['jsonBeingSent']);

   //You should see something like this if you print_r $receivedData
   // object(stdClass) {
   //      [car] => ...
   //      [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.

?>

希望有帮助。

于 2013-02-26T04:09:42.267 回答