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