如何拆分AJAX响应,从而不必发出多个请求?
How do you split up an AJAX response so you don't have to make several requests?
我想不出更好的标题了,下面是解释:
我正在做一个ajax请求,看起来像这样:
...
xmlhttp.send("data1=" + $data);
...
document.getElementById("data1display").innerHTML= xmlhttp.responseText;
...
现在页面已经开发,我想发送另一个变量,data2到同一个php页面进行处理。
我意识到我可以将数据添加到xmlhttp。发送像"data1=" + $data + "data2=" + $data2
但是!如何分割响应以更新两个单独的元素?(data1display and data2display).
构建响应的代码:
if ( isset( $_POST["data1"] ) )
die($object->function()); //returns html to fill the specified element.
如果你的php处理页面返回的是JSON而不是html,你可以期待以下内容:
{
"data1display": "<div>whatever</div>",
"data2display": "<div>something</div>"
}
然后在js的success回调中,你可以这样做:
var targetIdArray = ["data1display", "data2display"];
var responseJSON = JSON.parse(xmlhttp.responseText);
for (var i = 0; i < targetIdArray.length; i++) {
document.getElementById(targetIdArray[i]).innerHTML= responseJSON[targetIdArray[i]];
}
如果你想在响应中坚持使用html,你可以为响应的每个部分添加一个类或ID,并使用常规的老式jQuery选择器从响应中获取正确的节点。
最终,你可能想要改变你的前端框架,所以它可能是更好的只是传回你想要呈现的数据,让客户端呈现它。这意味着根本不将html传递回客户端,而是使用一些模板解决方案,如车把。
{
"data1display": "whatever",
"data2display": "something"
}
,然后你可以做一对小模板,如:
<div>{{ content }}</div>
你能不能不写if语句,说如果这个请求被设置了,那么执行
. getelementbyid("data1display")。innerHTML = xmlhttp.responseText;
. getelementbyid("data2")。innerHTML = xmlhttp.responseText;
只需在ajax中添加if语句
相关文章:
- ajax请求的顺序总是不同的
- Meteor如何接收HTTP请求
- 有没有一种方法可以防止img get请求使用css或js发生
- 从ajax请求中获取javascript对象
- JSONP请求返回结果,但也触发error_callback
- 在localhost Dev Box上测试JSONP请求的最佳方式
- Ajax请求文档就绪会导致jquery加载缓慢
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- 在openshift node js应用程序中获取请求
- 反应路由器弄乱了请求网址
- 在我的情况下,如何进行http请求
- 使用密码对话框Javascript请求帮助
- servlet中的请求对象,而不是从jsp接收参数值
- 否'访问控制允许来源'标头存在于IISNOde中请求的资源(AngularJS+NodeJs)上
- JavaScript代码未正确检查ajax请求
- node.js请求数据事件未在CORS ajax调用中触发
- 如何检测第三方广告服务器请求
- 如果我不这样做,服务器有什么好的技巧来处理更多的请求吗;不必发回任何数据
- 如何拆分AJAX响应,从而不必发出多个请求?