【问题标题】:Getting from jQuery to JSON to PHP从 jQuery 到 JSON 到 PHP
【发布时间】:2013-02-26 02:51:43
【问题描述】:

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

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

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

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

无论如何,我有 92 个以上条目,它们都有相同的键:car、color 和 numberTires。

现在,我使用以下 function 循环遍历数组,以便仅使用 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 数组是由被认为是 JSON 的 javascript 创建的,还是采用易于转换为 JSON 的格式?

2) 我的 AJAX 调用需要是什么?我尝试了很多 AJAX 调用,以至于我不知道什么被认为是对/错。另外,请使用divisions 而不是我上面提供的数组的sn-p,因为divisions 数组是由divisionsLarge 中包含的内容动态生成的。

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

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

【问题讨论】:

  • 一个有用的观点:我认为您可能想查看stackoverflow.com/questions/206988/… 以了解如何轻松取消设置数组元素而不是重新构建它。
  • 我打算发表评论,说明我如何知道可能有一种更简单的方法可以使用内置方法拆分数组,但是上面那个怪物是我全心全意投入的东西精炼哈哈。现在,如果它返回的东西无法使用或无法轻松转换为 JSON,那么我会立即将其扔掉 ^^
  • 老实说,我还不确定——但我们的目标是消除任何未知数。我宁愿从已知良好的 json 数组中删除元素,而不是重建一个。如果您交换该链接的解决方案,您可能会发表评论 - 如果它仍然让您感到悲伤。
  • 你想向 PHP 发送什么?整个部门还是其中一个部门?
  • 我实际上需要 PHP 来迭代一些 url 以在服务器端收集一些数据,所以我只是在那个过程中我试图让 PHP 获取我想要迭代的 url on...(urls 是原始数组中的键值对之一,然后它只是 partitions 数组中的 id 和 url 到目前为止这是一个相当学习的过程,但它非常痛苦。

标签: php jquery ajax json post


【解决方案1】:

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

1.- Divisions 不被视为 JSON,它只是一个对象数组。所有 javascript 对象都可以使用JSON.stringify() 轻松转换为 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.

?>

希望对您有所帮助。

【讨论】:

  • 使用你的ajax,用divisions.php替换url where you want to post your data,使用你的php并尝试print_r($receivedData);,我得到的只是一个空白屏幕。 FireBug 甚至不注册 POST。
猜你喜欢
  • 1970-01-01
  • 2015-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多