2012-04-17 73 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)})

相关问题