Сделайте междоменный запрос JSONP ajax с помощью jQuery

Я хотел бы проанализировать данные массива 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}

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

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

Ответы на вопрос(7)

.

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

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

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 Абдул Муним

 31 июл. 2012 г., 11:42
Что произойдет, если вы попытаетесь перейти непосредственно к URL?
 prabu R31 июл. 2012 г., 12:04
Это показывает, что есть неожиданный токен: в данных JSON ... но это правильный способ использования массивов в JSON правильно ???
 prabu R31 июл. 2012 г., 11:53
Это правильно показывает данные JSON, которые я разместил выше ...
 prabu R31 июл. 2012 г., 11:10
Я пытался до сих пор нет выхода не приходит ...
 31 июл. 2012 г., 11:56
А какие ошибки вы получаете в консоли ошибок вашего браузера?

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

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

$.ajax({
    crossOrigin: true,
    url: url,
    success: function(data) {
        console.log(data);
    }
});
 20 окт. 2018 г., 14:00
Это работает очень хорошо.
 26 янв. 2017 г., 22:29
Не работает. Я получаю ошибку CORS.
 13 нояб. 2017 г., 11:34
Я добавил то же самое, но каждый раз, когда он дает ошибку. Я использую тип данных JSONP.
 31 июл. 2016 г., 23:45
если я правильно понял, он перенаправляет вещи через сторонний прокси. удобно, но трафик через сервер может победить оригинальную идею
Решение Вопроса
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});
 19 окт. 2015 г., 10:38
@AbdulMunim: Можно ли упомянуть файл json в свойстве url в $ .ajax? Какие расширения файлов поддерживаются в свойстве url? просто что-нибудь возвращается с дополненным обратным вызовом JS?
 26 янв. 2017 г., 22:28
Вот почему я получаю эту ошибку:Uncaught SyntaxError: Unexpected token : в консоли? В ошибке есть ссылка, по которой я нажимаю на данные JSON.
 26 июн. 2014 г., 18:01
I wrote an answer for this question here: Loading cross domain html page with jQuery AJAX & # X2013;the last one, supports https

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

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

Пытаться

alert(xml.Data[0].City)

Case sensitivly!

Ваш ответ на вопрос