2

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

4

2 回答 2

4

您可以在 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']);
}

这对你有帮助吗?

于 2013-04-01T18:29:14.420 回答
0

我也遇到过类似的情况,这是我使用基本 Javascript 的解决方案。

首先在 PHP 方面,我可以有四种结果之一(在 INSert 或 UPDate 上通过或失败),因此我对 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() {  
[...]  
于 2014-11-22T13:49:46.483 回答