jsonpCallback没有调用函数

时间:2013-03-11 19:44:08

标签: jquery ajax jsonp

这是我无法开始工作的jquery片段。我试图通过jsonpCallback

调用blackBackground()
$(document).ready(function()
{


    function blackBackground(data, status)
    {
        console.log("black background");
            //I want to eventually change the body style to black
    }

    $.ajax({
        url: 'http://localhost:3000/someurl',
        dataType: 'jsonp',

        jsonp: false,
        jsonpCallback: 'blackBackground'
    });

});

更新

jsonpCallback: 'blackBackground'

jsonpCallback: blackBackground

将blackBackground移动到全局范围。感谢所有回复。

4 个答案:

答案 0 :(得分:4)

这里的问题是函数blackBackground在全局范围内不可用。

您可以通过声明这样在全局范围中公开该函数:

window.blackFunction = function(){ .. }

...或者在ajax配置中使用匿名函数:

jsonpCallback: function(result){ .. }

我推荐后者,因为它会让你的全球范围变得更长一点:)

答案 1 :(得分:2)

  

“这是我的JSONP”

那是JSON,而不是JSONP。

由于您指定了jsonp: false,因此您需要自己在全局范围内定义回调。

function blackBackground(data, status)
{
    console.log("black background");
        //I want to eventually change the body style to black
}
// document ready isn't really needed here either, but you can make that choice.
$(document).ready(function()
{   
    $.ajax({
        url: 'http://localhost:3000/someurl',
        dataType: 'jsonp',
        jsonp: false,
        jsonpCallback: 'blackBackground'
    });

});

并且您的服务器应该回复:

blackBackground({
    "name": "async-poll",
    "description": "api for asynchronous polls",
    "version": "0.0.1",
    "dependencies": {
        "express": "3.x"
    }
})

答案 2 :(得分:2)

摘下单引号

jsonpCallback: blackBackground

答案 3 :(得分:1)

<击> dataType: "jsonp"

不是有效的数据类型。要执行jsonp,您需要将callback=?添加到URL查询字符串

url: 'http://localhost:3000/someurl?callback=?',