Помогите с обработкой ответа JSON - PullRequest
1 голос
/ 27 мая 2011

Я все еще пытаюсь понять, как использовать json ... Может кто-нибудь, пожалуйста, помогите мне понять, как справиться с этим ответом. Мой запрос:

$.ajax({
url: s7query,
dataType: 'jsonp',
success: function(){
// how do I deal with the response?
} 
});

JSON, который я запрашиваю, возвращает (с 1 или 0):

s7jsonResponse(
{"catalogRecord.exists":"1"},"");

Все, что мне нужно из этого, это число и поместить его в переменную, чтобы я мог затем запустить условную логику для этого результата. Спасибо за любую помощь в понимании этого ...

Если я попытаюсь справиться с успехом с помощью любой функции, firebug просто вернет, что s7jsonResponse не определен. Я попытался определить его как переменную вне запроса. Теперь я вижу в firebug, что он возвращает json из всех запросов, однако он возвращает их как ошибки и теперь говорит, что s7jsonResponse не является функцией. Я думаю, что я близко .. пожалуйста, помогите!

Ответы [ 2 ]

1 голос
/ 27 мая 2011

Вы указываете jsonp как dataType в вашем вызове ajax. Это говорит веб-службе о возвращении ответа jsonp, а не чистого ответа json. Итак, учитывая ответ, который вы получаете, вы должны определить функцию с именем s7jsonResponse, которая принимает два аргумента. Первый должен быть объектом json, и вам нужно взглянуть на API, чтобы получить второй, потому что в приведенном вами примере он пуст.

В вашем методе s7jsonResponse вы можете просмотреть возвращаемые данные, но, как указывает Лобо, у вас есть точка в имени. Из-за этого вам нужно будет получить доступ к свойству, используя скобки. Что-то вроде:

function s7jsonResponse( obj, nothing )
{
    var exists = obj["catalogRecord.exists"];
    // do your stuff with your 1 or 0 which is stored in exists
}
1 голос
/ 27 мая 2011

Хорошо, я пропустил часть json p!Все, что вам нужно, это определить метод для s7jsonResponse.

function s7jsonResponse (jsonData, someString) {
    alert(jsonData["catalogRecord.exists"]);
    // deal with the response here
}

См. Это для получения подробной информации о JSONP

начальный ответ

Я заметил, что catalogRecord.exists, в нем есть ., и он не будет извлекаться.Если у вас нет веских причин для этого, вы можете изменить его на catalogRecordExists и использовать приведенное ниже решение.

$.ajax({ 
url: s7query, 
dataType: 'json', //removed jsonp in the last edit
success: function(data){ // this is the method that executes on success
            // parseJSON is not required as you already put it in dataType
            // alert(($.parseJSON(data))["catalogRecord.exists"]); 
            alert(data["catalogRecord.exists"]);
         }
});

Примечание : данные, которые выотправлять обратно следует = {"catalogRecord.exists":"1"}

Вы можете использовать $. getJSON , чтобы сделать то же самое (он вызывает $.ajax)

...