相关疑难解决方法(0)

如何使用WCF自托管处理Ajax JQUERY POST请求

创建RESTful WCF服务器有很多原因(很容易),如果你可以避免ASP及其安全框(如果你所做的只是返回信息的简单请求),那就更好了.请参阅:http://msdn.microsoft.com/en-us/library/ms750530.aspx了解如何执行此操作.

我发现处理AJAX(JQUERY)GET请求很容易.但是在POST中处理JSON很棘手.

以下是一个简单的GET请求合同的示例:

    [OperationContract]
    [WebGet(ResponseFormat = WebMessageFormat.Json)]
    String Version();
Run Code Online (Sandbox Code Playgroud)

实现就在这里(返回一个JSON)

    public partial class CatalogService : ICatalogService
{
    public String Version()
    {
        mon.IsActive = true;
        this.BypassCrossDomain();
        ViewModel.myself.TransactionCount++;
        return ViewModel.myself.VersionString;
    }
}
Run Code Online (Sandbox Code Playgroud)

啊,但如果你想发布一些JSON怎么办?你会发现很多关于堆栈溢出的文章告诉你所要做的就是:

    [OperationContract]
    [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
    BuildResponse BuildToby(BuildRequest request);
Run Code Online (Sandbox Code Playgroud)

它将接收JSON消息,反序列化为Plain .NET对象(PO​​NO)并让您使用它.事实上,当我在Fiddler中构建请求时,这工作正常.

POST /BuildToby HTTP/1.1
User-Agent: Fiddler
Content-Type: application/json
Host: localhost:4326
Content-Length: 1999
Run Code Online (Sandbox Code Playgroud)

但是,当您在JQUERY 1.8中使用以下AJAX时,您会发现一个SURPRISE:

通过指定"application/json"的内容类型,您会发现有一个"预检"检查由浏览器触发,以查看您是否可以发布除了www-url-encloded post消息之外的其他内容.(堆栈中有关于此溢出的注释).

    var request = JSON.stringify({ FrameList: ExportData.buildList });
    var jqxhr = $.ajax({
    type: …
Run Code Online (Sandbox Code Playgroud)

wcf jquery http-post wcf-data-services

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

标签 统计

http-post ×1

jquery ×1

wcf ×1

wcf-data-services ×1