process.php が form.html によって作成された Ajax リクエストに応答すると、"false" または "true [ハッシュ値]" で応答します (ハッシュ値はハッシュ関数の出力です)。form.html で、考えられる 2 つの応答に対して別の関数を呼び出したいのですが、応答を解析するにはどうすればよいですか? たとえば
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 側では、4 つの結果 (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 です) では、応答文字列を 3 つのコンポーネントに分割し、それに応じて処理します。
[...]
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 に答える