2013-07-10 145 views
8

嗨我已經實現了一個Ajax POST請求來調用Web服務。它總是返回200行,但執行失敗的事件我已經嘗試了很多事情,但我沒有得到我犯的錯誤。我在這裏添加我的代碼。 Fiddler顯示響應內容,但Ajax未執行成功事件。Jquery AJAX POST調用返回200狀態確定,但錯誤

<!DOCTYPE html> 
<html><head> 
<script src="http://code.jquery.com/jquery-1.7.1.min.js" type="text/javascript"></script> 
</head> 
<body> 
<script type="text/javascript"> 

$.ajax({ 
    type: "POST", 
    url: url, 
    data: values, 
    dataType: 'json', 
    cache: false, 
    success: function (result) { 
     alert("success:"+result); 
    }, 
    error:function (error) { 
     alert("error"+error); 
    } 
}); 
</script> 
</body> 
</html> 

我已經試過數據類型: '文本' ......從服務器的響應是正確的JSON格式

請求JSON數據:

{ 
    "search": { 
     "params_attributes": { 
      "adults": "1", 
      "children": "0", 
      "depart_date": "2013-07-10", 
      "destination_name": "OMS", 
      "direct": "0", 
      "infants": "0", 
      "origin_name": "KUL", 
      "range": "0", 
      "trip_class": "0" 
     } 
    }, 
    "signature": "XXXXXXXX", 
    "marker": "XXX" 
} 

響應JSON數據:

{ 
    "search_id":"66", 
    "metadata" : {}, 
    "tickets" : [ 
     { 
      "native_prices":{"7":"5500.0", "6":"5680.0", "3":"5657.0"}, 
      "order_urls":{"7":"1","6":"557","3":"906"}, 
      "direct_flights":[ 
       { 
        "number":"1837", 
        "airline":"FV", 
        "departure":"1294037100", 
        "arrival":"1294041900", 
        "duration":"80", 
        "delay":"0", 
        "origin":"DME", 
        "destination":"LED", 
        "aircraft":"Airbus A319" 
       } 
      ], 
      "return_flights":[ 
       { 
        "number":"1858", 
        "airline":"FV", 
        "departure":"1295503800", 
        "arrival":"1295508600", 
        "duration":"80", 
        "delay":"0", 
        "origin":"LED", 
        "destination":"DME", 
        "aircraft":"Airbus A320" 
       } 
      ] 
     } 
    ], 
     "airlines": { 
      "AB": { 
      "alliance_name": null, 
      "average_rate": 3.84, 
      "deeplink_id": 18, 
      "homepage_id": "4ec0ff7b9f1c2760af0049d7", 
      "id": 35, 
      "name": "airberlin", 
      "rates": 377 
      }, 
      "AF": { 
      "alliance_name": "SkyTeam", 
      "average_rate": 2.89, 
      "id": 48, 
      "name": "Air France", 
      "rates": 292 
      } 
     }, 
    "airports":{ 
      "ALA": { 
      "average_rate": 3.66, 
      "city": "\u0410\u043b\u043c\u0430\u0442\u044b", 
      "country": "\u041a\u0430\u0437\u0430\u0445\u0441\u0442\u0430\u043d", 
      "name": "\u0410\u043b\u043c\u0430\u0442\u044b", 
      "rates": 60, 
      "time_zone": "Asia/Almaty" 
      }, 
      "AMM": { 
      "average_rate": 3.42, 
      "city": "\u0410\u043c\u043c\u0430\u043d", 
      "country": "\u0418\u043e\u0440\u0434\u0430\u043d\u0438\u044f", 
      "name": "Queen Alia International", 
      "rates": 5, 
      "time_zone": "Asia/Amman" 
      } 
    }, 
    "currency_rates":{"eur":"41.3564", "uah":"3.72911"}, 
     "gates_info": [ 
      { 
      "average_rate": 4.34, 
      "currency_code": "rub", 
      "id": 1, 
      "is_airline": false, 
      "label": "Nabortu", 
      "mobile_version": false, 
      "payment_methods": [ 
       "bank", 
       "yandex_money", 
       "web_money", 
       "terminal", 
       "card", 
       "svyaznoy", 
       "euroset" 
      ], 
      "rates": 336 
      }, 
      { 
      "average_rate": 4.34, 
      "currency_code": "rub", 
      "id": 2, 
      "is_airline": false, 
      "label": "Davs", 
      "mobile_version": false, 
      "payment_methods": [ 
       "cash", 
       "bank", 
       "yandex_money", 
       "web_money", 
       "terminal", 
       "card", 
       "exp", 
       "euroset" 
      ], 
      "rates": 416 
      } 
     ] 
} 

Ajax錯誤: {「readyState」:0,「responseText」:「」,「status」:0,「statusText」:「error」}

我加入這是從螢火蟲採取截圖請到tinygrab網址見截圖:

Headers - grab.by/on5Q 
Post - grab.by/on5U 
Response - grab.by/on5W 
Coockies - grab.by/on5Y 
+0

您可以發佈JSON結果嗎?有時問題在於格式和不同類型的引用。 –

+0

一些更多的上下文將需要或答案只會猜測工作? Interessing Information(對我來說):Json結果,錯誤對象/消息,結果,當你將'dataType'設置爲'text'時,這可能會有幫助。 –

+0

我檢查了數據,我可以推斷出,這個問題可能要歸因於服務的跨域策略。這是我能夠從這些數據中唯一可以看出的。你有沒有嘗試下載clientaccesspolicy.xml來查看它的狀態?自從你說你看到結果在小提琴手中,這是一個很長的鏡頭,但你永遠不知道。我希望這個指針可能有幫助。 –

回答

4

沒有看到JSON響應我將不得不猜測,這個問題是,你正在使用的錯誤(或否)JSON引用。你必須使用行情(對於屬性名稱和字符串值),或者至少當我有這個問題時,雙引號解決了它。

例子:

{"id":1,"name":"TOM"} 

我希望這有助於。

+0

謝謝,但我已經使用JSON的雙引號。 –

+0

你可以在你的問題中發佈JSON結果嗎?由於它在你使用dataType:text時似乎工作,並且它在你使用dataType:json時不起作用,所以它與響應有關。 –

+0

我已經使用dataType:文本,但它不工作 –

2

對於其他有此類錯誤的朋友,請嘗試將JSON值返回給您從中發送您的值的頁面。

在我的情況下,我在localhost:8080/sender頁面發送JSON數據到localhost:8110/receiver頁面。接收方頁面獲取數據後,返回如發送頁面{}。否則,即使服務器返回200 HTTP代碼,也會調用錯誤回調。

相關問題