【发布时间】: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