Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在URL中定义并生成回调的JQuery JSONP请求_Jquery_Callback_Jsonp - Fatal编程技术网

在URL中定义并生成回调的JQuery JSONP请求

在URL中定义并生成回调的JQuery JSONP请求,jquery,callback,jsonp,Jquery,Callback,Jsonp,我有一个测试JSONP服务器,它在发出HTTP GET请求时返回一个JSONP对象。它可以返回标准JSONP函数或回调变量中请求的函数。例如 JSONP_回调([ {“msg”:“今天是丹尼斯的生日!在咖啡角为每个人准备蛋糕!!!!(当它持续;-)”, {“msg”:“域OBIEE_1中的某些客户可能会由于网络延迟而出现性能下降,请联系Paul以了解详细信息”}, {“msg”:“Weblogic域WL_ENG_1将在22:00和00:00之间因维护而关闭”} ]); 这个示例用于测试Ang

我有一个测试JSONP服务器,它在发出HTTP GET请求时返回一个JSONP对象。它可以返回标准JSONP函数或回调变量中请求的函数。例如

JSONP_回调([ {“msg”:“今天是丹尼斯的生日!在咖啡角为每个人准备蛋糕!!!!(当它持续;-)”, {“msg”:“域OBIEE_1中的某些客户可能会由于网络延迟而出现性能下降,请联系Paul以了解详细信息”}, {“msg”:“Weblogic域WL_ENG_1将在22:00和00:00之间因维护而关闭”} ]);

这个示例用于测试AngularJS$HTTPJSONP方法,并且可以很好地测试这些脚本。现在,我正试图开发一个简短的jQuery脚本来检索与此演示服务器相同的JSON数据。jQuery脚本是

<script type="text/javascript" charset="utf-8">

var htmlData = "<ul><li>Ticker was not successfully initialized</li></ul>" ;

// callback function for JSONP ajax request
function msgsJsonCallback(jsonData) {
    htmlData = "<ul>" ;
    // get all msg values from JSON data
    // JSON format ([{"msg":"message 1"{,{"msg":"message 2},......])
    $.each(jsonData, function() {
        htmlData += "<li>" + this['msg'] + "</li>" ;          
    }) ;
    httmlData = htmlData + "</ul>" ;
    $('#tickerMessage').vTicker('stop');
    $('#tickerMessage ul').replaceWith(htmlData);
    $('#tickerMessage').vTicker('init',{speed: 1500, pause: 10000});
}

function RefreshMessages() {
    var url= "http://my.host:8024/?callback=?" ;
    $.ajax({ 
        type: 'GET',
        url: url, 
        jsonpCallback: 'msgsJsonCallback', 
        dataType: 'jsonp',
        timeout: 5000,
        success: function(json) {
            console.log("Success") ;
            console.dir(json) ;
        },
        complete: function(jqXHR, textStatus){
            console.log("COMPLETE: " + textStatus) ;
        }
     });

    // schedule next refresh
    setTimeout(function() {
        RefreshMessages();
    }, 60000);

}

// initialize message ticker on document-ready
$(document).ready(function() {
    RefreshMessages();
}) ;


</script>

var htmlData=“
  • 股票代码未成功初始化”
”; //JSONP ajax请求的回调函数 函数msgsJsonCallback(jsonData){ htmlData=“
    ”; //从JSON数据获取所有msg值 //JSON格式([{“msg”:“消息1”{,{“msg”:“消息2},…])) $.each(jsonData,function(){ htmlData+=“
  • ”+此['msg']+“
  • ”; }) ; httmlData=htmlData+“
”; $('tickerMessage').vTicker('stop'); $('#tickerMessage ul')。替换为(htmlData); $(#tickerMessage').vTicker('init',{speed:1500,pause:10000}); } 函数刷新消息(){ 变量url=”http://my.host:8024/?callback=?" ; $.ajax({ 键入:“GET”, url:url, jsonpCallback:'msgsJsonCallback', 数据类型:“jsonp”, 超时:5000, 成功:函数(json){ 控制台日志(“成功”); console.dir(json); }, 完成:函数(jqXHR,textStatus){ console.log(“完成:+textStatus”); } }); //安排下次刷新 setTimeout(函数(){ 刷新消息(); }, 60000); } //在文档准备就绪时初始化消息标记器 $(文档).ready(函数(){ 刷新消息(); }) ;
预期的HTTP请求为,但生成的HTTP请求类似。因此,指定的回调函数和生成的回调函数可能都在JSONP请求中

当(基于其他示例)将“var url=?”;“更改为”var url=”;“HTTP请求更改为“”。或将url更改为“var url=”时,请求url变为“”


非常感谢您提供有关如何解决此问题的任何帮助!

正在添加
\uu=someRandomNumber
位,作为一种解决方法,以确保ajax请求接收新数据,而不是命中浏览器缓存

如果要删除此选项,请添加
缓存:true
选项:

function RefreshMessages() {
var url= "http://my.host:8024" ;
$.ajax({ 
    type: 'GET',
    url: url, 
    jsonpCallback: 'msgsJsonCallback', 
    dataType: 'jsonp',
    timeout: 5000,
    success: function(json) {
        console.log("Success") ;
        console.dir(json) ;
    },
    complete: function(jqXHR, textStatus){
        console.log("COMPLETE: " + textStatus) ;
    },
    cache: true
 });

}

感谢您对_randomNumber的解释。这使我正确理解了如何在我编写的bash Web服务器上解决这个问题。脚本只需要一个url变量,因此将“?callback=callbackname&_randomNumber”解释为一个url变量。如果可以的话,请启用并删除jsonp()
function RefreshMessages() {
var url= "http://my.host:8024" ;
$.ajax({ 
    type: 'GET',
    url: url, 
    jsonpCallback: 'msgsJsonCallback', 
    dataType: 'jsonp',
    timeout: 5000,
    success: function(json) {
        console.log("Success") ;
        console.dir(json) ;
    },
    complete: function(jqXHR, textStatus){
        console.log("COMPLETE: " + textStatus) ;
    },
    cache: true
 });