帮助调试ajax问题

帮助调试ajax问题,ajax,debugging,Ajax,Debugging,有人知道为什么这样不行吗 $(function(){ console.log('ready'); $.ajax({ dataType : 'jsonp', jsonp : 'js', url : 'http://monitor.302br.net/MonitorScoreServlet', beforeSend : function(jqXHR, settings) { console.inf

有人知道为什么这样不行吗

$(function(){
    console.log('ready');
    $.ajax({
        dataType : 'jsonp',
        jsonp : 'js',
        url : 'http://monitor.302br.net/MonitorScoreServlet',
        beforeSend : function(jqXHR, settings) {
            console.info('in beforeSend');
            console.log(jqXHR, settings);
        },
        error : function(jqXHR, textStatus, errorThrown) {
            console.info('in error');
            console.log(jqXHR, textStatus, errorThrown);
        },
        complete : function(jqXHR, textStatus) {
            console.info('in complete');
            console.log(jqXHR, textStatus);
        },
        success: function(data, textStatus, jqXHR){
            console.info('in success');
            console.log(data, textStatus, jqXHR);
        }
    }); 
}); 
这直到最近才奏效。beforeSend处理程序从不触发,但您可以看到firebug中正在进行ajax调用,如果您转到url,它似乎会返回可接受格式的结果(与以前相同的结果):


文本/javascript:

(84.3);
如果我注释掉url,beforeSend会触发,但当然,没有url


有什么想法吗?

根据定义,AJAX请求仅限于您当前的域。因此,您不能从您的域请求外部URL。

好的,我觉得自己很笨。我认为是这样的:服务器过去被设置为将js参数作为回调函数。因此,url如下所示:

http://monitor.302br.net/MonitorScoreServlet?js=foo
将导致:

foo(84.1);
每当我们在浏览器中查看时,我们都会看到:

http://monitor.302br.net/MonitorScoreServlet?js
这导致:

(84.1)

我以为jQuery正在用它做一些魔术,将其转化为可用的数据,但现在我认为jQuery正在创建类似以下内容:

function jsonp1298047240882(data) {
    // do something with data
}

因此,当我们更改后端代码以不创建回调函数调用时,整个过程就停止了。(但是,
beforeSend
处理程序从未被调用,这仍然很奇怪。)

实际上,这就是jsonp的全部要点。但我想我知道发生了什么。