如何将回调函数作为GET请求中的参数传递?

时间:2013-09-18 15:28:16

标签: javascript php ajax http callback

为什么我们会通过GET传递回调函数? Noob在这里,我试过谷歌,但它让我失望了。根据我的理解,它可能看起来像这样(我不确定):

xhr.open("GET", "serverSideFile.php?callback=thisFunction", true);

帮助任何人?

1 个答案:

答案 0 :(得分:1)

这个想法是,如果请求通过将JSON数据放在<script>元素中返回JSON数据,则执行请求返回的JS。

像......那样......

// the request stuffs
var xhr = new XMLHttpRequest();

// detect state changes
xhr.onreadystatechange = function() {
    if (xhr.readyState == 4) { // this is completed state
        // build the script element to inject into
        var s = document.createElement("script");
        s.type = "text/javascript";

        // put the ajax response into the script element
        s.innerHTML = xhr.responseText;

        // add it to the <HEAD>
        document.getElementByTagName("head")[0].appendChild(s);
    }
}

xhr.open("GET", "serverSideFile.php?callback=myCallback", true);
xhr.send(null); // do that ajax


// the callback function
function myCallback(data) {
    // do blah
}

服务的回报就像......

myCallback([{title: "item1", value: "blah1"},{title: "item2", value: "blah2"}]);

修改

我猜你也可以在这上面使用HTML5脚本异步,只是....

var s = document.createElement("script");
s.type = "text/javascript";
s.async = true;
s.src = "serverSideFile.php?callback=myCallback";
document.getElementByTagName("head")[0].appendChild(s);

修改 这是一篇关于它的文章:http://en.wikipedia.org/wiki/JSONP