-1

将如何将此 jquery 函数重写为常规 javascript?

$(document).ready(function() {
    $.ajax({
        url: 'http://192.168.1.103:8124/',
        dataType: "jsonp",
        jsonpCallback: "_testcb",
        cache: false,
        timeout: 5000,
        success: function(data) {
            $("#test").append(data);
        },
        error: function(jqXHR, textStatus, errorThrown) {
            alert('error ' + textStatus + " " + errorThrown);
        }
    });
});

特别

  jsonpCallback: "_testcb",
         cache: false,

原始错误问题: 如何设置 xmlhttprequest 对象的属性以使用常规 javascript 接收 JsonP 回调?

更新的正确问题: 如何使用“纯 Javascript”进行 JsonP 回调?

4

2 回答 2

3

发送请求并通过浏览器的 Web 开发人员工具查看它的外观:

在此处输入图像描述

因此,为了模仿 jQuery 的反缓存行为,您可以在发送 AJAX 请求时将时间戳参数附加到 URL:

jsonp(url + '&_=' + (new Date).getTime());

至于 JSONP 回调,您只需传递一个callback参数:

jsonp(url + '?callback=' + callback_name);

然后浏览器基本上会调用eval(callback_name + '(' + response + ')');,因此请确保您的回调函数是全局的。

于 2013-04-26T00:28:28.310 回答
0

更新:

因此,经过一番挖掘,我从这篇文章中找到了等价物:

function foo(data)
{
    // do stuff with JSON
}

var script = document.createElement('script');
script.src = '//example.com/path/to/jsonp?callback=foo'

document.getElementsByTagName('head')[0].appendChild(script);
// or document.head.appendChild(script) in modern browsers

奇迹般有效!

于 2013-04-26T16:36:45.987 回答