UNDEFINED - PHP与jQuery AJAX的多个返回值

时间:2015-12-29 23:11:51

标签: javascript php ajax

因为我未定义。我失败的地方?

代码:


    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));

image

2 个答案:

答案 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);
    }
});