从Ajax响应中获取多个数据

时间:2013-04-01 17:51:21

标签: php javascript ajax return-value

当process.php响应form.html发出的Ajax请求时,它回复“false”或“true [hash value]”(其中hash值是散列函数的输出)。在form.html中,我想为两个可能的响应调用不同的函数,但是如何解析响应?例如,我必须打电话给  var responses = xmlhttp.responseText.split(" ")
假设哈希函数从不输出“假”,我可以使用
if(xmlhttp.responseText != "false")
这两种方式看起来都有点笨拙和无用,有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

您可以在PHP代码中执行以下操作:

$returnValue['ValueA'] = "a value";
$returnValue['ValueB'] = "another value";

echo json_encode($returnValue);
您的JavaScript代码中的

(此处使用JQuery):

$.ajax({
    type: "GET",
    dataType: "json",
    url: "./myphpfile.php",
    data: "parameter=parametervalue",
    success: function(data){
        printresult(data);
    }
});

function printresult(data)
{
    alert(data['ValueA']);   
    alert(data['ValueB']);
}

这对你有帮助吗?

答案 1 :(得分:0)

我有类似的情况,这是我使用基本Javascript的解决方案。

首先在PHP方面,我可以获得四种结果之一(INSERT或UPDate上的PASS或FAIL),因此我对AJAX的回应预先承载了这些结果:

[...]  
$echoStr = 'PASS/INS/Adding ID Succeeded.';   // INSert successful  
[...]  
$echoStr = 'FAIL/INS/Adding ID Failed';       // INSert failed  
[...]  
$echoStr = 'PASS/UPD/Updating D Succeeded.';  // UPDate successful  
[...]  
$echoStr = 'FAIL/UPD/Updating ID Failed';     // UPDate failed  
[...]  
echo $echoStr; return;                        // Reply to AJAX request.

在Javascript方面(ajax1是我的AJAX obj),我将响应字符串拆分为三个组件并进行相应的处理:

[...]  
ajax1.onreadystatechange = function() { 

  if (ajax1.readyState == 4 && ajax1.status == 200) {  

    response = ajax1.responseText;     // PASS or FAIL, INS or UPD, free form text alert

    passFail = response.substr(0,4);   // PASS or FAIL

    insUPD   = response.substr(5,3);   // INS or UPD

    usrMsg   = response.substr(9);     // Free form alert text

    if (passFail == 'PASS' && insUPD == 'INS') {

       // do what you need to do here
    }

    alert(usrMsg);
  }                 //  if (ajax1.readyState == 4 && ajax1.status == 200) {  
}                   //  ajax1.onreadystatechange = function() {  
[...]