2012-04-17 76 views
2

如何使用AJAX返回兩個參數?如何使用AJAX返回兩個字符串?

這是我的。這裏是我的html頁面上的2個textareas。

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

onkeyup事件調用MYFUNC()函數js文件

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返回到textarea res1。一切都好,它工作正常。但是,我希望將值p更改爲res2(另一個textarea)。這是計算,但我不知道如何返回多個參數。有什麼辦法做到這一點? 謝謝。

回答

5

最明顯的方式(如果您想發送兩個參數)是

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

,如果你想返回兩個參數,在PHP中使用數組和JSON

$arr = array(); 

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

對其進行編碼編輯 - 在回顯數組之前設置正確的文本標題。這樣做之後,解析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; 
    } 
} 
+0

對不起,但對我而言還不清楚。好的,我把$ p和$ q放在一個數組$ arr中,就像你說的那樣,並且使得echo json_encode($ arr);好。現在,如何將$ arr ['str1']提取到res1中?我用document.getElementById(「res1」)。innerHTML = xmlhttp.responseText;在我的.js文件中,當我只有一個返回的參數。謝謝。 – Haradzieniec 2012-04-17 13:06:27

+0

@Haradzieniec你應該解析JSON客戶端,然後使用參數。我編輯了我的答案。 JSON通常是一種瀏覽器方法,在舊版瀏覽器中有一些JavaScript庫可供使用 – 2012-04-17 13:14:43

+0

我已將您的代碼放到我的問題結尾(請參閱上文),以詢問爲什麼它不起作用。它得到一個錯誤。謝謝。 – Haradzieniec 2012-04-17 14:12:25

2

查找到JSON,JavaScript可以在本地處理。這比任何類型的字符串分割都要好,因爲它確保輸出不包含用於分解結果的字符或字符。

工作流程是這樣的:

  • PHP寫入導致成陣列,然後用json_encode編碼它()和回波此作爲響應
  • 的Javascript轉換其爲可用的JavaScript對象使用數組= JSON.parse (結果),其中結果是PHP的結果。

PHP的$ array ['me'] ='you'然後會是JavaScript中的array ['me']。

0

AJAX返回首頁的整個輸出,所以你不能返回兩個字符串,但你可以打破這個字符串分爲兩個

的頁面的例子輸出爲:HelloWorld的

現在你想既您好,世界分開,以便使這個輸出,如:你好,世界還是你好,世界還是你好|世界

,並與分隔符拆分它

$(「PAGE」,{「VAR」:「值」 },函數(response){response.split(delimiter)})

相關問題