2

AJAXを使用して2つのパラメーターを返す方法は?

これが私が持っているものです。これが私のhtmlページの2つのテキストエリアです。

<textarea name="source" id="source" onkeyup="myfunc(this.value);}"></textarea>
<textarea name="res1" id="res1"></textarea>
<textarea name="res2" id="res2"></textarea>

Onkeyupイベントは、 .jsファイルからmyfunc()関数を呼び出します。

myfunc()には次のような文字列が含まれています。

...
xmlhttp.onreadystatechange=function()
{
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
        document.getElementById("res1").innerHTML=xmlhttp.responseText;
    }
}
xmlhttp.open("POST","ajax_file.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset= UTF-8");
xmlhttp.send("q="+encodeURIComponent(str));

その結果、ajax_file.phpはいくつかの計算を行い、qとpを計算して、qを返します。文字列qがtextareares1に返されまし。すべてがOKです、それはうまくいきます。ただし、値pres2(別のテキストエリア)にも渡したいと思います。計算されますが、複数のパラメーターを返す方法がわかりません。それを行う方法は何ですか?ありがとうございました。

4

4 に答える 4

5

最も明白な方法(2つのパラメーターを送信する場合)は次のとおりです。

xmlhttp.send("q="+encodeURIComponent(str)+"&p="+encodeURIComponent(str1));

2つのパラメーターを返したい場合は、phpで配列を使用し、jsonでエンコードします。

$arr = array();

$arr['str1'] = $str1;
$arr['str2'] = $str2;
header('Content-type: application/json');
echo json_encode($arr);

編集-配列をエコーする前に、correcxtヘッダーも設定します。その後、クライアントでJSONを解析します

xmlhttp.onreadystatechange=function()
{
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
        var resp = JSON.parse(xmlhttp.responseText);
        document.getElementById("res1").innerHTML=resp.str1;
        document.getElementById("res1").innerHTML=resp.str2;
    }
}
于 2012-04-17T12:48:00.273 に答える
2

JavaScriptがネイティブに処理できるJSONを調べてください。これは、結果を展開するために使用する1つまたは複数の文字が出力に含まれないようにするため、どのような種類の文字列分割よりも優れています。

ワークフローは次のとおりです。

  • PHPは結果を配列に書き込み、それをjson_encode()でエンコードし、これを応答としてエコーします
  • Javascriptは、array = JSON.parse(result)を使用してそれを使用可能なJavaScriptオブジェクトに変換します。ここで、resultはPHPからの結果です。

PHPの$array['me'] ='you'は、JavaScriptではarray['me']になります。

于 2012-04-17T12:50:27.853 に答える
0

区切り文字列「Value1、Value2、Value3」を送信してからjavascript splitメソッドを使用するか、JSONを使用することができます:http ://www.php.net/manual/en/function.json-encode.php

于 2012-04-17T12:49:37.247 に答える
0

ajaxはページの出力全体を返すため、2つの文字列を返すことはできませんが、その文字列を2つに分割することはできます

たとえば、ページの出力は次のとおりです:HelloWorld

ここで、HelloとWorldの両方を分離する必要があるため、次のように出力します:Hello、World OR Hello-World OR Hello | World

その区切り文字で分割します

$( "PAGE"、{"var": "value"}、function(response){response.split(delimiter)})

于 2012-04-17T13:37:15.243 に答える