JQuery AJAX问题

时间:2011-07-19 17:18:23

标签: jquery ajax wcf

不太清楚这里发生了什么。我正在使用Visual Studio 2010 .NET 4.使用以下代码,我使用的是JQuery 1.4.2 - 使用JQuery 1.4.2,代码运行得非常好。我正在调用一个宁静的WCF RESTFUL方法。

我使用以下代码创建了一个简单的客户端:

Type = "POST";
    Url = "http://localhost:60922/servicestart/SaveAllClients";
    ContentType = "application/json; charset=utf-8";

    DataType = "json"; ProcessData = true;
    method = "SavePersons";
    Data = JSON.stringify(formApplication);

    CallService();


function CallService() {

     $.ajax({
          type: Type, //GET or POST or PUT or DELETE verb
          url: Url, // Location of the service
          data: Data, //Data sent to server
          contentType: ContentType, // content type sent to server
          dataType: DataType, //Expected data format from server
          processdata: ProcessData,    //True or False
          success: function(msg) {//On Successfull service call
           ServiceSucceeded(msg);
          },
       error: ServiceFailed// When Service call fails
      });
     }

现在,在一个单独的项目中的宁静代码:

[WebInvoke(UriTemplate = "SaveAllClients", Method = "POST", ResponseFormat = WebMessageFormat.Json,
            RequestFormat = WebMessageFormat.Json)]
        [OperationContract]
        public string SavePersons(Person peeps)
        {

            string xml = string.Empty;

            XMLToolset x = new XMLToolset();
            xml = x.SerializeToXML(peeps);

            xml = peeps.SerializeToXML(peeps);

            // send xml to Oracle -


             string json = string.Empty;

            Person p = new Person();
            p.first_name = "Good";
            p.middle_name = "Happy";
            p.last_name = "GH";

            json = p.ConvertToJson(p);

            return json;

        }

现在使用jquery 1.4.2,代码运行得非常好 - 基本上它是一个跨域请求。我决定将jquery 1.4.2换成jquery 1.6.2 - 为了保持最新状态 - 而且好 - 它现在不起作用 - 它报告服务错误O。

我在jquery 1.5.2中研究了ajax文档和新功能,并注意到一些事情,例如将跨域设置为true或使用jsonp,但这些都没有。

在ajax如何运作方面,1.6.2中的其他内容是否发生了变化?

2 个答案:

答案 0 :(得分:3)

您的代码无效 NOT ,因为您从jQuery 1.4.2切换到1.6.2但是因为您将WCF服务放在一个单独的项目中。所以我猜你把它托管在一个单独的应用程序中=>你现在违反了same origin policy。这个策略与jQuery无关。这是一个浏览器限制。

因此,如果您想要使其正常运行,您可以配置WCF service to use JSONP

答案 1 :(得分:0)

可能是您将服务移到了一个单独的项目中导致了这个问题。