2016-11-16 65 views
1

我有與jQuery AJAX功能的問題: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; 

請求後,當成功的響應來,警報顯示出來......但這裏的問題。警報包含...我的主頁上的HTML代碼,而不是「$ answer」值!

<!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

你曾經在PHP中輸出'$ answer'嗎? – 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」,但結果與之前一樣。 – Petrus

+0

@Petrus該腳本只有'<?php echo'something';?>'在其中? – chris85

+1

@ chris85是的,它的工作!:)對不起,混亂的傢伙,英語不是我的母語。還有很多要學習。謝謝您的幫助! – Petrus