JQuery AJAX междоменный

Вот простейший однострочный код.

select 
        LEFT(column, 1)+ lower(RIGHT(column, len(column)-1) )
     from [tablename]
460
задан fibono 10 February 2016 в 18:31
поделиться

6 ответов

Используйте JSONP .

jQuery:

$.ajax({
     url:"testserver.php",
     dataType: 'jsonp', // Notice! JSONP <-- P (lowercase)
     success:function(json){
         // do stuff with json (in this case an array)
         alert("Success");
     },
     error:function(){
         alert("Error");
     }      
});

PHP:

<?php
$arr = array("element1","element2",array("element31","element32"));
$arr['name'] = "response";
echo $_GET['callback']."(".json_encode($arr).");";
?>

Эхо могло быть неправильным, прошло много времени с тех пор, как я использовал php. В любом случае вам нужно вывести callbackName ('jsonString') обратите внимание на кавычки. jQuery передаст свое собственное имя обратного вызова, поэтому вам нужно получить его из параметров GET.

И, как сообщил Стефан Кендалл, $. GetJSON () - это сокращенный метод, но тогда вам нужно добавить 'callback =?' к URL-адресу как параметр GET (да , значение равно?, jQuery заменяет его собственным сгенерированным методом обратного вызова).

409
ответ дан 22 November 2019 в 22:53
поделиться

Я использую сервер Apache, поэтому я использовал модуль mod_proxy. Включите модули:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

Затем добавьте:

ProxyPass /your-proxy-url/ http://service-url:serviceport/

Наконец, передайте proxy-url в ваш скрипт.

9
ответ дан zenio 10 February 2016 в 18:31
поделиться

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

В вычислениях одна и та же политика происхождения является важной концепцией безопасности для ряда языков программирования на стороне браузера. , например, JavaScript. Политика разрешает сценариям, работающим на страницах, исходящих с одного и того же сайта, получать доступ к методам и свойствам друг друга без особых ограничений, но запрещает доступ к большинству методов и свойств на страницах разных сайтов.

Чтобы вы могли получать данные, это должно быть:

Тот же протокол и хост

Вам необходимо реализовать JSONP чтобы обойти это.

19
ответ дан admdrew 10 February 2016 в 18:31
поделиться

Из документации JQuery ( ссылка ):

  • Из-за ограничений безопасности браузера большинство запросов «Ajax» подчиняются одной и той же политике происхождения; запрос не может успешно получить данные из другого домена, субдомена или протокола.

  • На запросы сценариев и JSONP не распространяются одни и те же ограничения политики происхождения.

Я так понимаю, что для запроса нужно использовать jsonp. Но сам не пробовал.

4
ответ дан 22 November 2019 в 22:53
поделиться

Безопасность браузера предотвращает выполнение ajax-вызова со страницы, размещенной в одном домене, на страницу, размещенную в другом домене; это называется « политикой одинакового происхождения ».

8
ответ дан 22 November 2019 в 22:53
поделиться

Это возможно, но вам нужно использовать JSONP , а не JSON. Ссылка Стефана указала вам правильное направление. На странице jQuery AJAX есть дополнительная информация о JSONP.

Реми Шарп имеет подробный пример использования PHP .

9
ответ дан 22 November 2019 в 22:53
поделиться
Другие вопросы по тегам:

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