не могу получить JSON с помощью JQuery GetJSON - PullRequest
0 голосов
/ 27 марта 2012

У меня есть веб-сервис, и я пытаюсь получить данные по JSON. если я получаю доступ к тому же серверу, он работает нормально, но когда я загружаю его на хостинг, он не работает. проблема заключается в "? callback =?" пары. с хромом я вижу возвращенный json, но код ниже не показывает его во входном тексте:

   <html><head> <script src="jquery-1.7.1.min.js"  type="text/javascript" ></script>
    <script>
        $(document).ready(function()
        {   
            $("#cons").click(function(){
                alert("wait");
                var nombre = $("#nombre").attr('value');
                if(nombre!==''){
                    var today = new Date();
                    var mm = today.getMonth()+1; //January is 0!
                    var yyyy = today.getFullYear();

                    $.getJSON("http://grup15.mihost.info/index.php/WS/Api/user/nombre/"+nombre+"/ano/"+ yyyy +"/mes/"+mm+"/format/json?callback=?", function(data) {

                        var htmlResult = "";
                        $.each(data, function(key, val) {
                            htmlResult += val.total;
                        });

                        $('#gasto').attr('value',htmlResult);
                    });
                }else{
                    alert("Nombre Necesario");
                }
            });
        });
    </script>
</head>
<body>
    <table>
        <tr>
            <td>Nombre:</td>
            <td><input type="text" id="nombre" value=""/></td>
        </tr>
        <tr>
            <td>Gasto De este mes:</td>
            <td><input id="gasto" type="text" value=""/></td>
        </tr>
        <tr><td colspan="2"><button id="cons" type="button">Consultar</button></td></tr>
    </table>


</body>

Если я удаляю "? Callback =? Chrome показывает:" не разрешено Access-Control-Allow-Origin " что мне нужно сделать??? спасибо за помощь!

Ответы [ 4 ]

2 голосов
/ 27 марта 2012

?callback=? означает JSONP, что означает, что сервер должен возвращать JSONP, а не JSON.

На самом деле JSONP - это скрипт, который выглядит так:

func({data: 123, test: 456});

Ваши данные должныбыть заключенным в значение параметра callback.

2 голосов
/ 27 марта 2012

Вы не можете делать запросы AJAX между доменами, как это.Вместо этого используйте JSONP .

1 голос
/ 27 марта 2012

Javascript придерживается политики «того же источника», как описано здесь:

http://en.wikipedia.org/wiki/Same_origin_policy

Это мера безопасности для предотвращения межсайтовых скриптов.

Вы можете рассмотреть обсуждаемые здесь обходные пути: Способы обхода политики одного и того же происхождения

0 голосов
/ 27 марта 2012

Если вы не можете создать JSONP, вы можете создать функцию-обертку для извлечения ваших данных. Может быть через PHP.

Взгляните: craigslist rss feed . Мое решение - сборка для работы с XML, но его легко конвертировать для работы с JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...