1

这是我无法工作的 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

4 回答 4

4

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

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

window.blackFunction = function(){ .. }

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

jsonpCallback: function(result){ .. }

我推荐后者,因为它会让你的全局范围更整洁:)

于 2013-03-11T19:47:05.063 回答
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"
    }
})
于 2013-03-11T19:48:28.630 回答
2

去掉单引号

jsonpCallback: blackBackground
于 2013-03-11T20:11:04.507 回答
1

dataType: "jsonp"

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

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

于 2013-03-11T19:51:32.540 回答