使用jQuery AJAX从PHP中获取多个返回值

27
我正在使用这个jQuery代码:
$.ajax
({
    type: "POST",
    url: "customerfilter.php",
    data: dataString,
    cache: false,
    success: function(html)
    {
        $(".custName").html(html);
    }
});
我该如何做类似于这样的事情:$(".projDesc").html(html1);,以便我可以将返回结果拆分为两个HTML元素?
echo "<p>" .$row['cust_name']. "</p>";

这是我使用的PHP代码,我想要输出另一句话并将它放到另一个HTML元素中。

这样说清楚了吗?

4个回答

59

使用json_encode()将PHP中的关联数组转换为JSON格式,然后使用$.getJSON()方法获取返回的JavaScript数组。

示例:

<?php echo json_encode(array("a" => "valueA", "b" => "valueB")); ?>
在JavaScript中:
$.getJSON("myscript.php", function(data) {
  alert("Value for 'a': " + data.a + "\nValue for 'b': " + data.b);
});

太棒了!非常感谢你提供的好提示! :) - drpelz
2
你是否将.getJson方法放在ajax post请求的success函数内部,还是完全分开使用? - Al Hennessey
1
@Arken,我不确定你的意思。getJSON()需要一个URL和成功处理程序函数作为参数来接收解码后的数据。在处理程序中,您无需再次调用它,因为请求已经被执行过了。 - Klemen Slavič
1
很好的提示。我不得不添加var myData = JSON.parse(response);来转换AJAX成功的响应,但是同样的想法(而不是使用getJSON)。 - Jan

50

如果你想让响应返回JSON格式,那么你需要将jQuery更改为以下代码,以便设置预期的数据类型为json:

$.ajax({
    url: "your_url",
    dataType: "json",
    success: function(data) {
        // do something with data
    }
});
$.ajax
({
    type: "POST",
    url: "customerfilter.php",
    dataType: 'json',
    cache: false,
    success: function(data)
    {
        $(".custName").html(data.message1);
        $(".custName2").html(data.message2);
    }
});

那么您需要将响应编码为JSON数组:

 <?php echo json_encode(
      array("message1" => "Hi", 
      "message2" => "Something else")
 ) ?>

1
应该是 dataType: 'json'。你漏了引号。 - Stephen305

3
为什么不返回一个JSON对象呢?这样你就可以轻松地将许多不同的结果放入ajax响应中。

0
您可以在响应中使用分隔符并连接这些值,就像这样。
echo $value1.'|'.$value2;

现在您可以按以下方式使用 JavaScript 方法 split("|"):
var myarray = response.split("|");
var value_1 = myarray[0];
var value_2 = myarray[1];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接