2013-04-20 3 views
0

Я пытаюсь отправить объект JSON с использованием $ .ajax() в jquery с помощью метода POST с моей чистой html-страницы в конец конечной точки datapower. в fire error дает мне «внутреннюю ошибку сервера», пожалуйста, может кто-нибудь сказать мне, что я делаю неправильно здесь: HTTP/1.1 500 Ошибка X-Backside-Transport: FAIL FAIL Content-Type: text/xml Connection: близко

Мой 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

попробуйте удалить '' charset' из contentType' –

+0

попытался удалить кодирокую ..no радости !! :( – user2301878

ответ

0

Ajax не поддерживает кросс-домен REQ уесть. Для этого вам нужно использовать метод jsonp.

см Также в этом

How to make cross domain ajax call using jQuery JSONP

+1

-1: JSONP не работает с HTTP/POST – SuperSaiyan

+0

Пробовали Аякс ярлык $ .post (!) в jquery, данные достигают конечной точки, но не как JSON. Любая идея, как я могу заставить тип содержимого метода $ .post(), поскольку $ .ajax() не работает? – user2301878

+0

@ user2301878 '$ .post '- метод удобства' $ .ajax'. Если это невозможно сделать с '$ .ajax', это невозможно сделать с' $ .post'. Не говоря, что вы не можете делать то, что хотите. просто говоря «$ .post» не поможет – charlietfl

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.Используя ваш метод, описанный выше, datapower получает регулярное представление формы с помощью HTTP GET, как это: Но моя конечная точка datapower ожидает данные в формате JSON с помощью HTTP POST. Использование вашего menthod для данных в datapower не из формата JSON – user2301878

+0

Спасибо за ответ @ vladimir77.Используя ваш метод, описанный выше, datapower получает регулярную отправку формы с использованием HTTP GET Но моя конечная точка datapower ожидает данные в формате JSON с HTTP POST. Прошу, но я новичок JQuery.пожалуйста, вы могли бы предложить что-нибудь, что могло бы помочь мне отправить данные из моего JQuery UI в формате JSON с HTTP POST. – user2301878

+0

Добро пожаловать :) @ user2301878 Основная проблема заключается в том, что вы отправили асинхронный запрос другому домену, не так ли? jquery (и любая другая клиентская библиотека) - это инструмент, который не может нарушать междоменные ограничения, поскольку браузеры запрещают эту передачу. Может быть, вы пытаетесь сделать кросс-доменный запрос через сервер (используя, например, WCF или WebRequest) - вы отправляете POST-запрос на ваш сервер и распространяете его на конечную точку datapower? – vladimir77

Смежные вопросы