相关疑难解决方法(0)

为JSONP提供服务的最佳内容类型?

我有一个web服务,在没有指定回调的情况下调用时,将返回一个使用JSON字符串application/json作为内容类型.

当指定回调时,它会将JSON字符串包装在回调函数中,因此它不再是真正有效的JSON.我的问题是,我应该像application/javascript这种情况一样服务还是仍然使用application/json

javascript json jsonp

119
推荐指数
2
解决办法
5万
查看次数

MVC解决方案中的Web API在单独的项目中

我正在创建一个新的MVC4项目,研究让我相信现在通过Web API框架而不是控制器操作可以更好地实现从javascript到服务器端的通信.我的理解是否正确?

我假设我可以在Web API和MVC控制器之间共享所有属性等,所以面对它,对我来说似乎不是一个巨大的变化.

在设置应用程序时,我喜欢将组件拆分到项目中.我的计划是拥有一个MVC项目和一个Web API项目.但我遇到了问题.例如,我最终有2个应用程序,单独的路由设置等.

所以我的问题是,在MVC应用程序中,Web API框架应该位于同一个项目中,还是应该将Web API分离为自己的项目并解决问题?

c# asp.net-mvc asp.net-mvc-4 asp.net-web-api

87
推荐指数
5
解决办法
5万
查看次数

如何从ASP.NET Web服务生成JSONP以进行跨域调用?

我写了一个返回JSON的web服务,我试图用这样的jQuery调用它:

$.ajax({
    contentType: "application/json; charset=utf-8",
    url: "http://examplewebsite.com/service.asmx/GetData",
    data: { projectID: 1 },
    dataType: "jsonp",
    success: function () {alert("success");}
});
Run Code Online (Sandbox Code Playgroud)

但是,尽管使用Fiddler查看HTTP流量时web服务调用成功,但代码从不调用成功函数.我认为这是因为我的Web服务正在返回原始JSON而不是JSONP.

如何生成JSONP作为标准.NET Web服务方法的响应,如下所示:

[WebMethod(), ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public Project GetData(int projectID)
{
    Project p = new Project();
    p.Name = "foobar";
    return p;
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

asp.net jquery jsonp cross-domain

20
推荐指数
1
解决办法
3万
查看次数

从MVC 4 Web Api返回匿名类型失败,并出现序列化错误

我刚刚开始使用MVC 4 Web API,我似乎误解了它是如何工作的.

在Web API之前,我有一个像这样的简单MVC操作方法:

public JsonResult User()
{
    return Json(new
    {
        firstName = "Joe",
        lastName = "Jacobs",
        email = "joe.jacobs@gmail.com"
    });
}
Run Code Online (Sandbox Code Playgroud)

那会很好.在新的Web API控制器中,我正在尝试做类似的事情.

public object User()
{
    return new
    {
        firstName = "Joe",
        lastName = "Jacobs",
        email = "joe.jacobs@gmail.com"
    }
}
Run Code Online (Sandbox Code Playgroud)

这会因序列化错误而失败:

'ObjectContent`1'类型无法序列化内容类型'application/xml的响应主体; 字符集= UTF-8' .

内部异常:

类型'<> f__AnonymousType1`3 [System.String,System.String,System.String]'无法序列化.请考虑使用DataContractAttribute属性对其进行标记,并使用DataMemberAttribute属性标记要序列化的所有成员.如果类型是集合,请考虑使用CollectionDataContractAttribute对其进行标记.有关其他受支持的类型,请参阅Microsoft .NET Framework文档.

关于从API控制器返回匿名类型我不明白的是什么?

c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-web-api

18
推荐指数
1
解决办法
1万
查看次数

跨域ajax POST到web-api总是返回空响应

我想将HTML表单发布到web-api.

如果我在其他域中使用jQuery执行ajax POST一切正常,我收到200 OK 在firebug和response选项卡中我收到如下图所示的空白响应.这是我的jQuery代码:

var formData = new FormData($('form')[0]);
                var response = '';
                $.ajax({
                    url: 'http://localhost:2143/api/controller',
                    type: 'POST',
                    // Form data
                    data: formData,
                    //Options to tell JQuery not to process data or worry about content-type
                    cache: false,
                    contentType: false,
                    processData: false,
                    success : function(text)
                     {
                         response = text;
                         alert(response);
                     }
                });
Run Code Online (Sandbox Code Playgroud)

请帮我...

c# asp.net-mvc jquery cross-domain asp.net-web-api

2
推荐指数
1
解决办法
3899
查看次数