Вопрос по json, jquery, ajax, javascript – Сделайте междоменный запрос JSONP ajax с помощью jQuery

36

Я хотел бы проанализировать данные массива JSON с помощью jquery ajax с помощью следующего кода:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Sample</title>
<script type="text/javascript" src="Scripts/jquery-1.7.2.min.js"></script>
<script type="text/javascript">
    var result;
    function jsonparser1() {
        $.ajax({
            type: "GET",
            url: "http://10.211.2.219:8080/SampleWebService/sample.do",
            dataType: "jsonp",
            success: function (xml) {
                alert(xml.data[0].city);
                result = xml.code;
                document.myform.result1.value = result;
            },
        });
    }        
</script>    
</head>
<body>
<p id="details"></p>
<form name="myform">
    <input type="button" name="clickme" value="Click here to show the first name" onclick=jsonparser1() />
    <input type="text" name="result1" readonly="true"/>        
</form>
</body>
</html>

Мои данные JSON:

{"Data":   [{"Address":"chetpet","FirstName":"arulmani","Id":1,"LastName":"sathish","City":"chennai"},{"Address":"ramapuram","FirstName":"raj","Id":2,"LastName":"nagu","City":"chennai"},{"Address":"ramapuram","FirstName":"raj","Id":2,"LastName":"nagu","City":"chennai"},{"Address":"ramapuram","FirstName":"ramaraj","Id":3,"LastName":"rajesh","City":"chennai"},{"Address":"ramapuram","FirstName":"yendran","Id":3,"LastName":"sathi","City":"chennai"}],"Code":true}

Но я не получаю вывод ... кто-нибудь, пожалуйста, помогите ...

I wrote an answer for this question here: Loading cross domain html page with jQuery AJAX & # X2013;the last one, supports https jherax
Может быть, это ваш бэкэнд, который ничего не возвращает. Опубликовать это! Samson
Используйте JSON.parse для анализа данных JSON. в успехе: функция (данные) {var result = JSON.parse (data); document ... value = result.Code; } Mifeng

Ваш Ответ

7   ответов
0

.

  var parsed_json = $.parseJSON(xml);
Это в функции успеха? Потому что я получаю ошибку в консоли:Uncaught SyntaxError: Unexpected token : и он отображает предупреждение функции ошибки, даже не попадает в функцию успеха.
0

используйте вместо этого xml.data [& quot; Data & quot;] [0] .city

8

http://www.ajax-cross-origin.com/

Просто добавьте опцию crossOrigin: true

$.ajax({
    crossOrigin: true,
    url: url,
    success: function(data) {
        console.log(data);
    }
});
Это работает очень хорошо.
Не работает. Я получаю ошибку CORS.
Я добавил то же самое, но каждый раз, когда он дает ошибку. Я использую тип данных JSONP.
если я правильно понял, он перенаправляет вещи через сторонний прокси. удобно, но трафик через сервер может победить оригинальную идею
1

Data, но у вас есть доступdata, Он чувствителен к регистру

function jsonparser1() {
    $.ajax({
        type: "GET",
        url: "http://10.211.2.219:8080/SampleWebService/sample.do",
        dataType: "json",
        success: function (xml) {
            alert(xml.Data[0].City);
            result = xml.Code;
            document.myform.result1.value = result;
        },
    });
}        

EDIT Также Город и Кодекс находятся в неправильном случае. (Спасибо, Кристофер Кенни)

EDIT2 Также должен быть json, а не jsonp (по крайней мере, в этом случае)

UPDATE Согласно вашему последнему комментарию, вы должны прочитать этот ответ:https://stackoverflow.com/a/11736771/325836 Абдул Муним

А какие ошибки вы получаете в консоли ошибок вашего браузера?
Я пытался до сих пор нет выхода не приходит ... prabu R
Это правильно показывает данные JSON, которые я разместил выше ... prabu R
Что произойдет, если вы попытаетесь перейти непосредственно к URL?
Это показывает, что есть неожиданный токен: в данных JSON ... но это правильный способ использования массивов в JSON правильно ??? prabu R
86
Concept explained

ваш сервис не размещен в том же пути вашего веб-приложения? Ваш веб-сервис должен поддерживать внедрение метода для выполнения JSONP.

Ваш код выглядит нормально, и он должен работать, если ваши веб-сервисы и ваше веб-приложение размещены в одном домене.

Когда вы делаете$.ajax сdataType: 'jsonp' Это означает, что jQuery фактически добавляет новый параметр в URL запроса.

Например, если ваш URLhttp://10.211.2.219:8080/SampleWebService/sample.do тогда jQuery добавит?callback={some_random_dynamically_generated_method}.

Этот метод больше похож на проксиwindow объект. Это ничего особенного, но выглядит примерно так:

window.some_random_dynamically_generated_method = function(actualJsonpData) {
    //here actually has reference to the success function mentioned with $.ajax
    //so it just calls the success method like this: 
    successCallback(actualJsonData);
}

Summary

Ваш код клиента выглядит просто отлично. Однако вам нужно изменить свой серверный код, чтобы обернуть данные JSON именем функции, которое передается со строкой запроса. то есть

Если вы запросили строку запроса

?callback=my_callback_method

тогда ваш сервер должен ответить на данные в виде:

my_callback_method({your json serialized data});
@AbdulMunim: Можно ли упомянуть файл json в свойстве url в $ .ajax? Какие расширения файлов поддерживаются в свойстве url? просто что-нибудь возвращается с дополненным обратным вызовом JS?
Вот почему я получаю эту ошибку:Uncaught SyntaxError: Unexpected token : в консоли? В ошибке есть ссылка, по которой я нажимаю на данные JSON.
I wrote an answer for this question here: Loading cross domain html page with jQuery AJAX & # X2013;the last one, supports https
0

размещенный на Yahoo. Обрабатывает XML и HTML

https://gist.github.com/rickdog/d66a03d1e1e5959aa9b68869807791d5

1

Пытаться

alert(xml.Data[0].City)

Case sensitivly!

Похожие вопросы