0

我试图创建自己的 POST 请求。这是我的功能:

function sendPost(o) {
    var h = new XMLHttpRequest();
    h.onreadystatechange = requestComplete;

    function requestComplete() {
        if ( h.readyState === 4 ) {
            if ( h.status === 200 ) {
                if ( o.done ) {
                    o.done(h.responseText);
                }
            } else {
                if ( o.fail ) {
                    o.fail(h.responseText);
                }
            }
        }
    }

    h.open('POST', o.url, true);
    h.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
    h.send(o.data);
}

一切都很好,但我很困惑,如何将其 dataType 设置为script,就像在 jQuery 中一样:

$.ajax({
    url: 'someurl.php',
    type: 'POST',
    dataType: 'script' // <-- how to do this?
});
4

1 回答 1

2

dataType与发送Ajax 请求关系不大。它主要是关于 jQuery 对响应的作用。

从文档中:

“脚本”:将响应评估为 JavaScript,并将其作为纯文本返回。通过将查询字符串参数“_=[TIMESTAMP]”附加到 URL 来禁用缓存,除非缓存选项设置为 true。

所以这里有一些修改与发送有关。

  1. o.data
  2. 从 a 中获取时间戳new Date()
  3. 检查(通过查看indexOf('?')它是否已经有查询字符串
  4. 附加?或附加&到 URL 后跟时间戳

剩下的就是处理响应了:

将响应评估为 JavaScript

所以:

eval(h.responseText);

不过,这一切都很讨厌。一般来说,如果要动态加载脚本,通常最好通过向<script>页面添加元素来实现。

于 2013-08-15T05:16:32.580 回答