【问题标题】:Javascript JSON post to PHP; Values not passingJavascript JSON 发布到 PHP;值不通过
【发布时间】:2013-07-21 12:55:09
【问题描述】:

我知道有很多线程都存在同样的问题,但我觉得我已经阅读了 10 次以上,我在这里要疯了......

我正在使用 Javascript/Ajax 向 PHP 页面发帖。首先,我使用 key : value 对创建一个对象。然后我对对象进行字符串化。结果是:

{"ID":"150433699","FileNo":"1114"} \\I have tried putting singles quotes on the ends of the string

Ajax 帖子:

$.ajax(
{
    type:"POST",
    url:"<mydomain>/valupd.php",
    dataType:"json",
    data:jsonStr //This variable is what I used to output the json listed above.
});

PHP 代码:

$json = $_REQUEST["jsonStr"];
$JD = json_decode($json, true);
$id = $JD['ID'];

我没有包含我的 SQL 连接,因为它可以工作。记录插入时使用空白或默认值,除非我勾选,在这种情况下它不会添加记录。

我还创建了另一个测试 php 页面。然后使用 console.log(jsonStr) 的输出声明一个字符串变量作为它的值。 - 这与前面列出的 json 字符串的输出相同。我使用与上面列出的完全相同的 PHP 代码来处理该字符串,并且能够回显 FileNo 的值。

【问题讨论】:

  • 不要将其字符串化为 jsonStr,只需将其保存在对象表示法中......在 php 方面,您应该能够像普通的后超全局变量一样访问对象的属性,即 $_POST["ID"]和 $_POST["FileNo"]
  • 您没有在 ajax 调用中包含字段名称,因此 json 字符串作为裸字符串发送,这意味着它在 $_POST 中不可用,请改用 $json = file_get_contents('php://input') $json = $_POST['jsonStr'].
  • @MarcB:看起来像是给我的答案:)
  • @MarcB:使用 file_get_contents 示例...然后我将解码 $json,然后能够像 $json = file_get_contents('php://input'); 一样访问它$data = json_decode($json, true); $id = $data['ID']; ?我试过了,但仍然一无所获。
  • 使用更新后的代码只需使用$id = $_POST["ID"] 删除其他两行。

标签: php javascript ajax parameter-passing json


【解决方案1】:

首先,当您从 javascript 发布到 php 时,请确保您的数据是 json 对象,不要通过 JSON.stringify 运行它。

$.ajax(
{
    type:"POST",
    url:"<mydomain>/valupd.php",
    dataType:"json",
    data:jsonObj //This should be an object
});

当您执行调用时,json 对象中的属性将成为 $_POST php 超全局中的条目。

所以给定一个看起来像

的帖子
 {"ID":"150433699","FileNo":"1114"}

您将能够以

身份访问属性
 $id = $_POST["ID"];
 $fileNo = $_POST["FileNo"];

【讨论】:

  • 感谢您为我写出来...我尝试了很多不同的方式,我想我实际上开始组合零件...这非常有效。再次感谢!
【解决方案2】:

你的 ajax 端调用应该是

data: 'jsonStr='+jsonStr
       ^^^^^^^--fieldname
                 ^^^^^^^---value

这将允许$_POST['jsonStr'] 工作。否则,由于没有字段名称,$_POST[] 无法填充 - 您必须具有键:值关系,并且您没有提供键。

另一种解决方法是

$json = file_get_contents('php://input');

在 PHP 中检索 RAW 帖子数据,它将直接读取该 json 字符串。

【讨论】:

  • 感谢您的回复。有道理。
猜你喜欢
  • 1970-01-01
  • 2012-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-01
  • 2015-04-07
  • 1970-01-01
相关资源
最近更新 更多