2016-11-16 2 views
1

У меня есть проблема с функцией Ajax JQuery:JQuery Ajax - Неправильный ответ

var arrayIdEq = JSON.stringify(iditem); 
    $.ajax({ 
     type: "POST", 
     url: "index.php", 
     dataType : 'text', 
     contentType: 'application/json; charset=utf-8', 
     data: { 
      arrayIdEq : arrayIdEq 
     }, 
     success: function(answer) { 
      alert(answer); 
     }, 
     complete: function() { 
     }, 
     error: function(jqXHR, errorText, errorThrown) { 
      alert(jqXHR+" - "+errorText+" - "+errorThrown); 
     } 
    }); 

"arrayIdEq" содержит число от 0 до 7, или строку "EMPTY". PHP код:

elseif(isset($_POST['arrayIdEq'])){ 
$answer = "my_answer"; 
return $answer; 

После запроса, когда ответ придет успех, оповещения шоу ... Но вот проблема. Вместо значения «$ answer», предупреждение содержит ... HTML-код с моей главной страницы!

<!DOCTYPE html> 
<html lang="pl"> 
<head> 
<meta charset="utf-8"> 
<meta http-equiv="X-UA-Compatible" content="IE=edge"> 
<title> Medivia</title> 
</head> 
<body> 
<h1>Medivia</h1> 
    <form action="index.php" method="POST"> 
    <label>E-mail:<br><input type="text" name="mail" required></label> 
    <br> 
    <label>Hasło:<br><input type="password" name="pass" required></label> 
    <br> 
    <button name="login">Zaloguj się</button> 
</form> 
</body> 
</html> 

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

+1

Вы отправляете свой запрос ajax на адрес: 'index.php'. Если это не то место, где у вас есть PHP-код, он просто вернет эту страницу. –

+1

Вы когда-нибудь выпускаете '$ answer' в своем PHP? – chris85

+0

@ chris85 Я этого не делаю. – Petrus

ответ

3

Ваша answer переменная в функции success будет содержать полный вывод вашего php-скрипта.

Так что, когда вы звоните index.php и вы:

elseif(isset($_POST['arrayIdEq'])){ 
    $answer = "my_answer"; 
    return $answer; 
} 

Сценарий будет выходить только если return оператор вызывается из основного сценария (не из функции), но выход будет на выходе генерируется по сценарию до этой точки.

Ваш скрипт должен выводить - а не return - только то, что вы хотите вернуть в javascript.

Возможно, отдельный сценарий для запросов ajax будет более удобным решением, чем использование файла index.php, который вы используете для создания полной страницы.

+0

Я заменил «return» на «echo». Но результат такой же, как и раньше. – Petrus

+0

@Petrus В скрипте есть '' В нем? – chris85

+1

@ chris85 да, и это работает! :) Извините за беспорядок парней, английский не мой родной язык. Еще многое предстоит узнать. Спасибо за помощь! – Petrus

Смежные вопросы