我试图创建自己的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?
});
答案 0 :(得分:2)
dataType
与发送 Ajax请求几乎没有关系。它主要是关于jQuery对响应的作用。
来自文档:
“script”:将响应评估为JavaScript并将其作为纯文本返回。通过将查询字符串参数“_ = [TIMESTAMP]”附加到URL来禁用缓存,除非缓存选项设置为true。
所以在这里发送一些修改。
o.data
new Date()
indexOf('?')
是否已有查询字符串?
或&
附加到网址后跟时间戳剩下的就是处理回复:
将响应评估为JavaScript
所以:
eval(h.responseText);
但这完全是令人讨厌的。一般来说,如果您想动态加载脚本,通常可以通过向页面添加<script>
元素来实现这一目的。