Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript—多个XmlHttpRequests,并与它们关联目标div_Javascript_Xmlhttprequest_Closures - Fatal编程技术网

Javascript—多个XmlHttpRequests,并与它们关联目标div

Javascript—多个XmlHttpRequests,并与它们关联目标div,javascript,xmlhttprequest,closures,Javascript,Xmlhttprequest,Closures,我有一个包含多个XmlHttpRequest调用的页面,我知道要将哪个连接输出到哪个div 是否有一种方法可以重用函数的代码,以某种方式传递我希望写入输出的divname 现在,我真的把这些函数复制了6次 当然可以 如果你试图用6个不同的div做完全相同的事情,但是使用6个不同的调用和6个不同的响应,那么做一个函数,它接受一个div,并使用该函数6次 var doSomethingAJAX = function (el, url) { var xhr = new XMLHttpReque

我有一个包含多个XmlHttpRequest调用的页面,我知道要将哪个连接输出到哪个div

是否有一种方法可以重用函数的代码,以某种方式传递我希望写入输出的divname

现在,我真的把这些函数复制了6次

当然可以

如果你试图用6个不同的div做完全相同的事情,但是使用6个不同的调用和6个不同的响应,那么做一个函数,它接受一个div,并使用该函数6次

var doSomethingAJAX = function (el, url) {
    var xhr = new XMLHttpRequest();
    xhr.open("GET", url, true);
    xhr.onload = function () { el.appendChild(document.createTextNode(xhr.responseText)); };
    xhr.onerror = function () { /* ... */ };
    xhr.send();
};

doSomethingAJAX(document.getElementById("div1"), "http://example.com/json1.json");
doSomethingAJAX(document.getElementById("div2"), "http://example.com/json2.json");
有更多的通用方法可以做到这一点,但如果您试图解决6
s的问题,我不会建议您创建一个AJAX框架

关键是,无论您重复的是什么工作,都要弄清楚如何将其转换为一个函数(或两个函数,或三个函数),然后调用该函数,只传递更改的部分

如果这还远远不够,那么用例子更新你的问题,我们就可以找到答案。

当然可以

如果你试图用6个不同的div做完全相同的事情,但是使用6个不同的调用和6个不同的响应,那么做一个函数,它接受一个div,并使用该函数6次

var doSomethingAJAX = function (el, url) {
    var xhr = new XMLHttpRequest();
    xhr.open("GET", url, true);
    xhr.onload = function () { el.appendChild(document.createTextNode(xhr.responseText)); };
    xhr.onerror = function () { /* ... */ };
    xhr.send();
};

doSomethingAJAX(document.getElementById("div1"), "http://example.com/json1.json");
doSomethingAJAX(document.getElementById("div2"), "http://example.com/json2.json");
有更多的通用方法可以做到这一点,但如果您试图解决6
s的问题,我不会建议您创建一个AJAX框架

关键是,无论您重复的是什么工作,都要弄清楚如何将其转换为一个函数(或两个函数,或三个函数),然后调用该函数,只传递更改的部分


如果这还远远不够,那么用例子更新你的问题,我们就可以找到答案。

是的,词汇范围/闭包概念很容易做到。最好是显示两个请求的代码,以便进行更快、更客观的重构。您可以制作一个JSON对象服务器端,其中键是查询选择器(如#myDiv),值是内容。{“#myDiv”:“文本…”,“.myClass”:“其他文本…”。在客户端Json.parse responseText并使用for-in进行演练。是的,使用词法作用域/闭包概念可以轻松完成。最好是显示两个请求的代码,以便进行更快、更客观的重构。您可以制作一个JSON对象服务器端,其中键是查询选择器(如#myDiv),值是内容。{“#myDiv”:“文本…”,“.myClass”:“其他文本…”。在客户端Json.parse responseText并在中使用for遍历。