0

JQuery で $.ajax() を使用して、純粋な html ページから datapower エンドポイントに POST メソッドで $.ajax() を使用して JSON オブジェクトを送信しようとしています。ここで何が間違っているのか教えてください: HTTP/1.1 500 エラー X-Backside-Transport: FAIL FAIL Content-Type: text/xml Connection: close

私の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);
                        }
                    }
                });


            });
        }); 
4

2 に答える 2

0

Ajax はクロス ドメイン リクエストをサポートしていません。これには jsonp メソッドを使用する必要があります。

こちらもご覧ください

jQuery JSONP を使用してクロスドメイン ajax 呼び出しを行う方法

于 2013-04-20T10:43:39.167 に答える
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 から提供される Web ページは、通常、server1.example.com 以外のサーバーに接続したり通信したりすることはできません。いくつかの例外には、HTML 要素が含まれます。一部のページでは、要素のオープン ポリシーを利用して、他のオリジンから動的に生成された JSON 形式のデータを処理する JavaScript コードを取得します。この使用パターンは、JSONP として知られています。JSONP のリクエストは、JSON ではなく、任意の JavaScript コードを取得します。これらは、JSON パーサーによって解析されるのではなく、JavaScript インタープリターによって評価されます。

于 2013-04-20T19:05:35.030 に答える