因为我未定义。我失败的地方?
代码:
function add(id,cost){ var info = { "id" : id, "cost": cost, }; $.ajax({ data: info, url: 'a.php', type: 'post', success: function (datos) { alert(datos+"\n r1: "+datos.r1+"\n r2:"+datos.r2); } }); }
归档a.php PHP:
$cost=$_POST['id']*$_POST['cost'] + 137; echo json_encode(array("r1" =>$_POST['id'], "r2" => $cost));
答案 0 :(得分:4)
为什么您认为$.ajax
会将datos
理解为JSON?你需要指定它,你可以用几种方法来做。
解析
success: function (datos) {
datos = JSON.parse(datos);
alert(datos+"\n r1: "+datos.r1+"\n r2:"+datos.r2);
}
在$.ajax
本身指定
$.ajax({
data: info,
url: 'a.php',
type: 'post',
dataType:"json",
....
在PHP中设置标题(对于< IE8不起作用)
header('Content-Type: application/json');
我建议你使用第一个和第三个的组合。让我们不遗余力。
答案 1 :(得分:1)
Datos可能是一个字符串
你可以这样做:
datos = JSON.parse( datos );
或者,您可以将返回类型设置为JSON:
$.ajax({
data: info,
dataType: 'json',
url: 'a.php',
type: 'post',
success: function (datos) {
alert(datos+"\n r1: "+datos.r1+"\n r2:"+datos.r2);
}
});