我想将键值传递给php页面。
在php页面,我将通过匹配ajaxcallid
开始读取值。
但它不起作用。
我要传递的语法/方式导致错误。
parse error
invalid json: ajax call id is missing
的JavaScript / AJAX:
var person = {
"Address" : "123 Anywhere St.",
"City" : "Springfield",
"PostalCode" : 99999
};
alert(person);
person= JSON.stringify(person);
alert(person);
$.ajax({
url: 'ROOT_URL/admin/ajaxtest.php',
type: "POST",
dataType: 'json',
data: {ajaxcallid: '26', jsarr: person},
timeout: 5000,
success: function(output) {
alert(output.Address);
},
});
PHP:
<?php
if (isset($_REQUEST['ajaxcallid']))
{
if($_REQUEST['ajaxcallid']==26)
{
//example, I want to read value of person.Address, person.City,
//person.PostalCode
//what is the easiest way
$phparr= json_decode($_REQUEST['jsarr']);
//do all other operation
$output= json_encode($phparr);
}
}
else
{
$output= "ajax call id is missing";
}
echo $output;
?>
答案 0 :(得分:19)
如果你没有使用dataType:'json',你可能需要做striplashes
$.post(window.data.baseUrl, {posts : JSON.stringify(posts)});
在php中:
$posts = json_decode(stripslashes($_POST['posts']));
答案 1 :(得分:6)
这对我有所帮助:
data = json_decode($this->request->data['jsarr'], true);
在您的PHP代码中访问记录
希望它会帮助别人!
答案 2 :(得分:5)
我会猜测并说你不应该串通任何东西。我相信JQuery会为你做到这一点。即,没有人= JSON.stringify(人)。试一试。
答案 3 :(得分:3)
这是您的$.ajax
电话和PHP
方应该是这样的:
<强> JQuery的强>
$.ajax({
url: "/admin/ajaxtest.php",
method: "POST",
data: {
ajaxcallid: "26",
person: JSON.stringify({
"Address" : "123 Anywhere St.",
"City" : "Springfield",
"PostalCode" : "99999"
})
}
}).done(function(data) {
if (!data) {
// generic error message here
} else if (data == 'invalid') {
alert('no ajaxcallid received');
} else {
var result = $.parseJSON(data); // if you pass back the object
alert(result.Address);
}
});
<强> PHP 强>
if (isset($_REQUEST['ajaxcallid'])) {
if ((int) $_REQUEST['ajaxcallid'] == 26) {
$personData = json_decode($_REQUEST['person']);
$address = $personData->Address;
$postalCode = $personData->PostalCode;
$returnData = json_encode($personData);
echo $personData;
die();
}
} else {
echo 'invalid';
die();
}
答案 4 :(得分:1)
$data_array = json_decode($json_string);
如果要将对象转换为关联数组,请在函数中添加true:
$data_array = json_decode($json_string, true);
答案 5 :(得分:0)
我没有与PHP
合作过,但根据我对ASP.net
的经验,以下内容可能对您有所帮助。
将contentType
键添加到ajax settigns:
type: "POST",
contentType:'application/json',
dataType: 'json',
另外我认为您需要stringify
data
分配给var person = {
"Address" : "123 Anywhere St.",
"City" : "Springfield",
"PostalCode" : 99999
};
var d= {ajaxcallid: '26', jsarr: person};
var dat=JSON.stringify(d);
......
data: dat,
......
这样的全部价值:
{{1}}