Nitesh Virani
Nitesh Virani

Reputation: 1712

Jquery AJAX POST call return 200 status OK but error

Hi I have implemented one Ajax POST request to call web service. It always return 200 OK but execute failed event I have tried lot of things but I am not getting where I am doing mistake. I am adding my code here. Fiddler shows the response content but Ajax is not executing success event.

<!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>

I have tried dataType:'text'....response from server is in proper JSON format

Request JSON data :

{
    "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"
}

Response JSON data:

{
    "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 error: {"readyState":0,"responseText":"","status":0,"statusText":"error"}

I am adding screenshots which is taken from firebug please go to tinygrab url to see screenshot:

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

Upvotes: 8

Views: 34901

Answers (2)

Kıvılcım
Kıvılcım

Reputation: 419

For other friends that have such an error, try to return a JSON value to the page that you send your values from.

In my case, I'm on localhost:8080/sender page that sends JSON data to localhost:8110/receiver page. After receiver page gets the data, return something like {} back to the sender page. Otherwise, the error callback is called even if the server returns a 200 HTTP code.

Upvotes: 2

winner_joiner
winner_joiner

Reputation: 14720

Without seeing the JSON Response i would have to guess, that the Problem is, that you are using the Wrong(or no) Quotes for the JSON. You must use double Quotes(for property names and string values), or at least when i had that problem, the double quotes solved it.

Example:

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

i hope this helps.

Upvotes: 6

Related Questions