如何使用dataType作为脚本发送AJAX?

时间:2013-08-15 05:01:29

标签: javascript ajax jquery

我试图创建自己的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设置为脚本,就像在jQuery中一样:

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

1 个答案:

答案 0 :(得分:2)

dataType发送 Ajax请求几乎没有关系。它主要是关于jQuery对响应的作用。

来自文档:

  

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

所以在这里发送一些修改。

  1. 选择o.data
  2. new Date()
  3. 获取时间戳
  4. 检查(通过查看indexOf('?')是否已有查询字符串
  5. ?&附加到网址后跟时间戳
  6. 剩下的就是处理回复:

      

    将响应评估为JavaScript

    所以:

    eval(h.responseText);
    

    但这完全是令人讨厌的。一般来说,如果您想动态加载脚本,通常可以通过向页面添加<script>元素来实现这一目的。