Невозможно выполнить какие-либо операции PHP в приложении Ajax - PullRequest
1 голос
/ 07 октября 2010

Мое Ajax-приложение работало нормально, пока я не реализовал оператор if в скрипте PHP ... тогда, как заразная болезнь, кажется, что если я что-то делаю с данными в PHP, он ничего не возвращает обратно слою Javascript.

Все, что я могу сделать, это вернуть данные обратно ...

Например, строка запроса, которую я отправляю в PHP, читает ...

index.back3.php?form=login&json={"email":"mo@maurice-campobasso.com","password":"asdasdfas"}

и яЯ знаю, как он туда попал, потому что в простейшем отладочном PHP-файле (index.back3.php), который я создал, все, что у меня есть, - это простое эхо-выражение ... и оно никогда не перестает отправлять данные обратно в файл Javascript.

когда index.back3.php читает

<?php echo $_GET[json]; ?>

предупреждение, которое я включил в javascript, надежно выплевывает строку json.

также когда оно читает

<?php echo $_GET[form]; ?>

когда я становлюсь более сложным, чем это, ничто не возвращается к javascript.Даже простая конкатенация ...

<?php echo ($_GET[form] . $_GET[json]); ?>

... ничего не возвращает!

Простой оператор if ... else также ничего не возвращает.

<?php

    if(!isset($_GET[form]) { 
     echo "no!";
    } else {
     echo "yes!";
    }

?>

Иэта важная операция также ...

<?php

 $array = json_decode($GET[json], true);

 var_dump($array);
?>

ничего не возвращает.

ОК ... так что просто чтобы убедиться, что все над платой, вот моя функция вывода Ajax в слое Javascript.

function responseAjax() {

 if (myRequest.readyState == 4)  {

  if(myRequest.status == 200) {  

   var foo = myRequest.responseText;

   alert(foo);

  } else {

   alert("An error has occured:  " + myRequest.statusText);
  }
 }
}

Может кто-нибудь объяснить, что происходит?Я действительно в замешательстве.

Ответы [ 3 ]

0 голосов
/ 07 октября 2010

if(!isset($_GET[form]) { 
 echo "no!";
} else {
 echo "yes!";
}

?>

вам не хватает закрывающей скобки в операторе if.И, как уже было сказано несколько раз, поместите кавычки вокруг ключей массива.

В процессе разработки вы также должны включить error_reporting в E_ALL.это помогает выяснить, в чем может быть небольшая ошибка.

0 голосов
/ 09 октября 2010

Мне удалось разобраться, это было связано со строкой кода, которую я пропустил в этом посте, потому что я думал, что это избыточно. Полная версия функции пошла следующим образом.

function responseAjax() {

    if (myRequest.readyState == 4)  {       

        if(myRequest.status == 200) {       

            var foo         =   myRequest.responseText;     

            var cookieData      =   eval("(" + foo + ")");  //this was the problem!!

            alert(foo);             

            document.cookie = 'email ='     + cookieData.email      + '; path=/';
            document.cookie = 'firstname =' + cookieData.FirstName  + '; path=/';

        } else {

            alert("An error has occured:  " + myRequest.statusText);
        }
    }
}

Это была строка 'var cookieData' ... хотя я не знаю почему.

0 голосов
/ 07 октября 2010

$ _ GET ['form'] - правильный путь.

и использование формы в качестве имени переменной совсем не годится.

используйте любую другую переменную и передайте $ _GET ['formname'].

Попробуйте получить доступ к странице php напрямую через URL и передать параметры, сначала проверьте ошибку возврата php

или ее работоспособность.

Вы можете использовать PHP,jquery и ajax простыми способами.

попробуйте найти методы .post или .get в jquery

http://api.jquery.com/jQuery.post/

$. post ('ajax / test.html', function (data) {$ ('. result'). html (data);});

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