Делаем GET вызов php из javascript БЕЗ ajax - PullRequest
0 голосов
/ 31 марта 2012

У меня есть небольшой фрагмент кода javascript, который передает строку в php-файл и ожидает JSON, который возвращается для отображения в окне предупреждения. Проблема из-за проблем со зрением. Я не думаю, что AJAX работает.

Вот что у меня было для javascript:

<p style="text-align: center;"><script type="text/javascript"> 
var http = new XMLHttpRequest(); 
var params = x; 
http.onreadystatechange=function()
 {
   alert(http.responseText);
   alert(http.responseXML);

   if (http.readyState==4 && http.status==200)
     {

     }
  }
  http.open("GET","http://someserver.somesight.edu/scripts/auth.php?name=" +    params,true);
  http.send();
</script></p>

Так вот, мой javascript вызывает PHP, а затем возвращает строку JSON. Я хочу сделать больше с этой строкой, но сейчас я хочу просто получить ЧТО-ТО обратно. Хотя это не так, и я думаю, что это проблема домена (как бы это ни называлось, когда javascript не позволяет вам делать ajax-запросы из разных доменов).

Это мой php скрипт:

<?php
 include("config.php"); 
 include("JSON.php");
 $selectedusername = $_GET['name'];
 $resultstring = connectToLDAP($selectedusername); //some function
 $echo $resultstring;  //the json string
?>

Это кажется достаточно простым, но достаточно уверенным, что поля предупреждений в javascript имеют пустое значение и ноль. Я подумал, что существует не ajax способ сделать вызов php, чтобы получить ответ на какую-либо строку, потому что я все еще хотел бы обработать это подробнее ...

Так здесь что-то не так? Должен отметить, что я не знаю, на каком уровне скрипты не разрешено размещать на разных сайтах. Javascript размещен на

my.somesight.edu

и сайт пытается перейти на

someother.somesight.edu

Я думал, что это основной домен, и все в порядке, но так как он, очевидно, не работает (или мой код просто сломался)

РЕЗУЛЬТАТЫ ФИДЛЕРА:

Он делает https-туннель с сайта, на котором включен javascript ... это веб-сессия с 3 по 9. Затем веб-сессия 10 попадает на сайт, на котором есть скрипт php:

 [RAW VIEW CLICKING ON THAT WEB SESSION]
 HTTP/1.1 200 OK
 Date: Fri, 30 Mar 2012 21:07:39 GMT
 Server: Apache/2.2.15 (Red Hat)
 X-Powered-By: PHP/5.3.10
 Content-Length: 53
 Connection: close
 Content-Type: text/html; charset=UTF-8
 {"messagetype":"none","message":"time good","url":""}

Так что это выглядит хорошо, что JSON - это то, что я хочу вернуть в своем javascript ... просто ничего не происходит.

Ответы [ 4 ]

0 голосов
/ 20 января 2015

Ваш код javascript здесь не возвращает никаких данных:

 if (http.readyState==4 && http.status==200)
 {

 }

должно быть

 if (http.readyState == 4 && http.status == 200) {
     alert(http.responseText);
     //or
     document.write(http.responseText);
     //or
     document.getElementById('id').innerHTML = http.responseText;
 }
0 голосов
/ 31 марта 2012

Вы можете обойти проблемы между сайтами с помощью CORS и JSONP. Если у вас есть права доступа / управления к серверу, вы можете установить заголовок Access-Control-Allow-Origin, и междоменный домен больше не будет междоменным. Другой вариант - JSONP - он использует междоменные GET-запросы через блок скрипта. Результат, который находится в json, удаляется, так как с ним вызывается ваша функция обратного вызова.

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

Ваш php возвращает обычную строку. Вы не хотите простой строки; вам нужны данные в кодировке JSON.

Руководство по PHP json-encode

Итак, в вашем примере попробуйте:

echo json_encode($resultstring);

Кроме того, вам необходимо убедиться, что ваш Javascript прослушивает данные JSON, которые будут возвращены. Я рекомендую вам попробовать jQuery getJson ajax метод. Очень прост в использовании.

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

Попробуйте установить Fiddler и посмотрите на запросы, которые вы отправляете и получаете с сервера. Опубликуйте их здесь, если вы все еще не можете понять это.

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