【问题标题】:handing callbacks from jsonp gives me undefined error从 jsonp 处理回调给了我未定义的错误
【发布时间】:2016-02-14 11:54:58
【问题描述】:

第一次使用 jsonp。

已经尝试了 2 天,现在尝试了很多不同的东西。

我有一个网络服务器 A,它对网络服务器 B 进行 ajax 调用。

Web Server B 上的 api 控制器方法是:

    [HttpGet]
    [HttpPost]
    [Route("LoginRequest")]
    public JsonpResult LoginRequest([FromUri]Login login)
    {
        JsonpResult result = new JsonpResult("hello");
        return result;
    }

我的 jquery/ajax 是:

window.myCallback = function (data) {

    console.log('ok');
};


       var LogIn = {
            Email: $("#txtEmail").val(),
            MobileNo: $("#txtMobileNumber").val(),
            PinCode: '',
            Message: '',
            Success: false
        };

$.ajax({
    type: "POST",
    crossDomain: true,
    dataType: 'jsonp',
    jsonp: 'callback',
    jsonpCallback: myCallback,
    url: "https://web Server B/api/LoginRequest",
    data: LogIn,
    success: function (data) {
        alert('Success');
        toggleControls(false);
    },
    error: function (jqXHR, textStatus, errorThrown) {
        alert('fail');
    }

设置断点是这样的:

ajax 调用

后面的代码被命中

c#中创建的jsonp对象上的手表图片:

js回调被命中(数据未定义)

返回的 jsonp 对象现在在 c# 结束时命中

ajax 中的错误处理程序被错误调用:

Uncaught SyntaxError: Unexpected token :

【问题讨论】:

    标签: jquery json ajax jsonp


    【解决方案1】:

    要么我很愚蠢,要么我没有正确阅读示例,或者两者兼而有之,但我想我会指出我的错误是将我的代码放在 api 控制器中。只要我把它放在一个普通的控制器中,它就可以工作了。我仍然想知道如何对 api 控制器进行跨浏览器调用,但现在我很高兴它可以工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-01
      • 2013-11-19
      • 2014-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多