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