成功的$.Ajax和$.Post调用总是从C#返回失败
Succesfull $.Ajax and $.Post calls always return failure from C#
我需要一个跨域的web api方法来向C#中的一些javascript返回有效的jsonp。我似乎无法让这种魔术发生。我在网上到处找,找不到一个从头到尾的例子来满足我的需求和工作。。。Fiddler显示我返回了有效的json数据,但当我在F12开发工具或firebug中遇到断点时,结果是一条失败消息。
以下是我目前拥有的:
C#
/// <summary>
/// POST: /Instance/RefreshItem
/// </summary>
/// <param name="instanceId"></param>
/// <returns>Json</returns>
[HttpPost]
public System.Web.Mvc.JsonResult RefreshItem(int instanceId, Guid customerId)
{
try
{
var clientConnection = Manager.ValidateInstance(customerId, instanceId);
clientConnection.RefreshItem();
var result = new MethodResult()
{
Success = true,
Value = instanceId,
Message = "Item successfully refreshed."
};
return new System.Web.Mvc.JsonResult() { Data = result };
}
catch (Exception ex)
{
Manager.LogException(_logger, ex, customerId, instanceId);
var result = new MethodResult()
{
Success = false,
Value = instanceId,
Message = ex.GetBaseException().Message
};
return new System.Web.Mvc.JsonResult() { Data = result };
}
}
JS-
Example.RefreshItem = function ()
{
Example.SDK.JQuery.getSettings(
function (settings, userId, userLocaleId)
{
alert("Attempting to refresh item for instance " + settings.ConnectionId + "'r'nThis may take awhile.");
var url = settings.SystemUrl + "/Api/WebApiServices/ExampleAdmin/RefreshItem?customerId=" + settings.CustomerId + "&instanceId=" + settings.ConnectionId;
$.ajax({
url: url,
dataType: "jsonp",
jsonpCallback: 'RefreshItemCallback',
success: RefreshItemCallback
})
},
Example.SDK.JQuery.defaultErrorCallback
);
}
function RefreshItemCallback(data)
{
alert(data.d.Message);
}
我也尝试过$.Post().Always(),得到了相同的结果。
我做错了什么???
我认为您的问题是实例化JsonResult
而不是使用Json
方法。
假设你的C#方法在控制器中,所以不是
return new System.Web.Mvc.JsonResult() { Data = result };
do:
return Json(result);
此方法可能设置JsonResult的一些其他属性,如果未设置这些属性,客户端将无法正确接收这些属性。
查看Microsoft如何仅向您展示如何在MSDN 上通过Json
方法创建JsonResult
请注意,View
、Content
和File
等方法可能也是如此。
战斗了一周,直到你在某个地方问了这个问题才找到答案。。。在询问的30分钟内,我发现:http://bob.ippoli.to/archives/2005/12/05/remote-json-jsonp/这正是我所需要的。
感谢所有发帖的人。
相关文章:
- 如何避免JSON.stringify在特殊情况下返回undefined,从而为JSON.parse创建字符串失败
- Angular Cross Origin Request CORS失败,但节点http.get()成功返回
- 承诺,如果第一个失败,则返回第二个承诺结果
- AngularJS$http返回200正常,但失败了
- 测试Ember.JS应用程序失败,返回ReferenceError:未定义Ember
- Parse.com失败,返回:ReferenceError
- 返回按钮回调函数在特定情况下失败或未启动
- 循环遍历所有字段,如果任何一个字段的验证失败jquery,则返回false
- 如何将 $http.put 封装到一个函数中,该函数执行某些操作,然后返回通过或失败的承诺
- IE7 jquery 选择器返回“失败”
- 当返回的查询不为空时,来自 php 的 MS SQL Server 过程失败并显示 500
- 将延迟对象作为失败返回
- 万一函数失败,什么是好的返回值
- 使用延迟对象/承诺的Ajax调用返回失败
- 成功的$.Ajax和$.Post调用总是从C#返回失败
- Nodejs - Passport认证总是返回失败重定向
- FireFox中HTML/iframe错误-组件返回失败代码:0x80004005 (NS_ERROR_FAILURE)
- 组件返回失败码:0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIDOMEventTarg
- Http请求返回失败,但实际上是成功的
- 组件返回失败码:0x80040111 (NS_ERROR_NOT_AVAILABLE)