使用一个AJAX响应更新两个不同的值

时间:2009-08-24 09:43:40

标签: html ajax

我想用一个ajax-response更新两个不同的值。

<span id="nr1">Change this</span>
<span id="nr2">and change this</span>

现在我可以改变一个值,我喜欢这样:

document.getElementById('nr1').innerHTML = xmlHttp.responseText;

是否可以做这样的事情:

document.getElementById('nr1').innerHTML = xmlHttp.responseText1;
document.getElementById('nr2').innerHTML = xmlHttp.responseText2;

****更新**** 响应来自php。 我是JSON的新手。

4 个答案:

答案 0 :(得分:4)

XMLHTTPRequest没有responseText1和responseText2属性(我假设你的xmlHttp是),只有responseText,所以你必须在responseText字段中返回一些可解析的东西(比如JSON)。因此,您的服务器可以发回{“firstResponse”:“value1”,“secondResponse”:“value2”},您可以从该JSON字符串填充您的字段。使用json.org的json2.js

<script type="text/javascript" src="json2.js"></script>
. . .
var theResponse = JSON.parse(xmlHttp.responseText);
document.getElementById('nr1').innerHTML = theResponse.firstResponse;
document.getElementById('nr2').innerHTML = theResponse.secondResponse;

修改 为了从PHP制作这个JSON响应,你应该使用PHP JSON librariesjson_encode page中有几个例子可以帮助您入门。我发布的其他代码(在其他回复中发布)都是浏览器端的javascript代码。

$arr = array ('firstResponse'=>'value1','secondResponse'=>'value2');
echo json_encode($arr);

将该代码放入PHP脚本中以生成JSON字符串

{"firstResponse":"value1","secondResponse":"value2"} 

然后,之前发布的javascript代码将解析该内容。

答案 1 :(得分:1)

如果您信任并控制服务器,只需在JSON中返回字典以获取响应,并在客户端使用它。所以:

v = eval(xmlHttp.responseText);
document.getElementById('nr1').innerHTML = v['nr1']
document.getElementById('nr2').innerHTML = v['nr2']

答案 2 :(得分:0)

如前所述,将Ajax调用作为JSON对象返回是有意义的。我建议使用更安全的JSONP调用(不知道你是否可以使用任何本地支持它的库)。

// Your script returns this
callback123(
{
    "nr1" : "This is conten for nr1",
    "nr2" : "Some content for nr2"
});

// JavaScript callback looks like this
function callback123(data)
{
    for(var key in data)
        document.getElementById(key).innerHTML = data[key];
}

答案 3 :(得分:0)

使用JSON.parse

link text