2013-04-20 120 views
0

我想发送一个JSON对象使用jquery中的$ .ajax()与一个POST方法,从我的纯html页面,到一个数据端点endpoint.the响应标题在火灾bug给我“内部服务器错误”,请任何一个告诉我,我在这里做错了: HTTP/1.1 500错误 X-Backside-Transport:失败失败 内容类型:文本/ xml 连接:接近

我的jQuery代码看起来是这样的:

$(document).ready(function() { 
      $('#btn_submitcallback').click(function() { 

       //add the values we need for the API to an object 
       var objCallbackData = new Object; 
       var d = new Date(); 
       var dat = d.getDate(); 
       var mon = d.getMonth() + 1; 
       var year = d.getFullYear(); 
       var todayDate = dat + "/" + mon + "/" + year; 
       alert("inside submit callback"); 
       //build the object 
       objCallbackData.Store_Code = "POO726"; //$('#sel_title').val(); 
       objCallbackData.Title = $('#sel_title').val(); 
       objCallbackData.First_Name = $('#txt_firstname').val(); 
       objCallbackData.Last_Name = $('#txt_surname').val(); 
       objCallbackData.House_Number = $('#txt_houseno').val(); 
       objCallbackData.Street = $('#txt_streetname').val(); 
       objCallbackData.City = $('#txt_city').val(); 
       objCallbackData.Post_Code = $('#txt_postcode').val(); 
       objCallbackData.Email = $('#txt_email').val(); 
       objCallbackData.Phone_Number = $('#txt_phone').val(); 
       objCallbackData.Project_Type = "Bathroom"; 
       objCallbackData.Callbacktime_Morning = "Y"; 
       objCallbackData.Callbacktime_Afternoon = "Y"; 
       objCallbackData.Callbacktime_Evening = "N"; 
       objCallbackData.Callbacktime_Weekend = "N"; 
       objCallbackData.Callbacktime_Weekday = "Y"; 
       objCallbackData.Helparea_Measuring = "Y"; 
       objCallbackData.Helparea_Designing = "N"; 
       objCallbackData.Helparea_Usingspaces = "N"; 
       objCallbackData.Helparea_Services = "N"; 
       objCallbackData.Helparea_Productinfo = "N"; 
       objCallbackData.Status = "O"; 
       objCallbackData.Date = todayDate; 

       // alert(objCallbackData.date); 


       //turn the object in to a JSON string 
       var myJson = JSON.stringify(objCallbackData); 
       alert(myJson); 


       $.ajax({ 
        type: 'POST', 
        url: 'http://xb629050-s1.uk.b-and-q.com:9340/api/callback', 
        contentType: 'application/json; charset=utf-8', 
        data: myJson, 
        dataType: 'json', 
        success: function() { 
         alert("good"); 
        }, 
        error: function (xhr, status) { 
         switch (status) { 
          case 404: 
           alert('File not found'); 
           break; 
          case 500: 
           alert('Server error'); 
           break; 
          case 0: 
           alert('Request aborted'); 
           break; 
          default: 
           alert('Unknown error: ' + xhr.statusText); 
         } 
        } 
       }); 


      }); 
     }); 
+0

尝试删除从'contentType' – 2013-04-20 10:44:39

+0

了'charset'试图消除字符集..no快乐!! :( – user2301878 2013-04-20 11:14:19

回答

0

阿贾克斯不支持跨域REQ uest。 您需要为此使用jsonp方法。

也看到这个

How to make cross domain ajax call using jQuery JSONP

+1

-1:JSONP不与HTTP工作/ POST – SuperSaiyan 2013-04-20 11:12:31

+0

试过AJAX快捷$。员额(! )在jquery中,数据到达端点但不是JSON。任何想法如何强制内容类型的$ .post()方法,因为$ .ajax()不起作用? – user2301878 2013-04-20 11:16:08

+0

@ user2301878'$ .post ''是'$ .ajax'的一个简便方法,如果不能用'$ .ajax'完成,不能用'$ .post'完成,不要说你不能做你想做的事情。 。只是说'$ .post'不会帮助 – charlietfl 2013-04-20 11:29:06

0

@Thrustmaster是正确的,你不能使用跨域异步操作POST请求需要使用GET,因为引擎盖下将加载脚本标签内容。

试试这个:

$.getJSON("http://xb629050-s1.uk.b-and-q.com:9340/api?callback=?", 
    objCallbackData, processServerResponse); 

其中processServerResponse是函数,将获取数据后,被称为:

function processServerResponse(data) { 
// processing data from server 
} 

请参阅例如“免费geoIP'服务。尝试浏览:http://freegeoip.net/json/?callback=handleResponse

PS一些摘自维基:

..网页从server1.example.com服务无法正常连接 或比server1.example.com其他服务器进行通信。几个 例外包括HTML元素。利用元素的开放 策略,一些页面使用它们来检索 JavaScript代码,该代码对来自其他来源的动态生成的JSON格式的 数据进行操作。这种使用模式被称为JSONP。 JSONP请求不是检索JSON,而是任意JavaScript代码。 它们由JavaScript解释器进行评估,而不是由JSON 解析器进行分析。

+0

感谢您的答复@ vladimir77.使用上述方法,数据浏览器使用HTTP GET获取常规表单提交,如下所示:但是我的数据端点端点数据采用JSON格式,使用HTTP POST。使用数据转换为datapower不是JSON格式 – user2301878 2013-04-22 13:31:39

+0

感谢您回复@ vladimir77.使用上述方法,数据浏览器使用HTTP GET获取常规表单提交 但我的数据端点端点期望JSON格式的数据与HTTP POST.Sorry,但我是一个JQuery新手。请你能提出一些建议,可以帮助我用JSON格式的HTTP POST发送来自JQuery UI的数据。 – user2301878 2013-04-22 13:39:45

+0

不客气:) @ user2301878主要关心的是你发送异步请求到另一个域,不是吗? jquery(和任何其他客户端库)是一种无法打破跨域限制的工具,因为浏览器禁止提交。可能是你尝试通过服务器进行跨域请求(使用WCF实例或WebRequest) - 您向服务器发送POST请求并将其传播到数据端点端点? – vladimir77 2013-04-22 14:06:22