2017-02-28 123 views
0

該代碼用於簡單的登錄驗證。PHP腳本不會將變量返回給AJAX

將值返回給JavaScript時,PHP腳本似乎不運行,但在沒有要返回的變量時運行正常。 所以有什麼不對,或者我需要添加其他任何東西來從PHP返回值。

<?php 
    header('Content-type: application/json; charset=utf-8'); 
    include("config.php"); 
    $formd=array(); 
    //Fetching Values from URL 
    $username2=$_POST['username1']; 
    $password2=$_POST['password1']; 
    $query = mysqli_query($db,"SELECT username FROM login WHERE username = '$username2'"); 
    $result=mysqli_fetch_assoc($query); 
    $sql=mysqli_query($db,"SELECT password FROM login WHERE username = '$username2'"); 
    $resul=mysqli_fetch_assoc($sql); 
    $row = mysqli_fetch_array($query,MYSQLI_ASSOC); 
    $count = mysqli_num_rows($query); 
    $pass=$resul['password']; 

    if((password_verify($password2,$pass))and($count==1)) { 
     echo "ds"; 
    } else { 
     echo "no"; 
     $formd['no']="Invalid password or username" 
    } 
    mysqli_close($db); // Connection Closed 
    echo json_encode($formd); 
    exit(); 
?> 

的JavaScript

<script> 
    $(document).ready(function(){ 
     $("#submit").click(function(){ 
      var username = $("#username").val(); 
      var password = $("#password").val(); 
      // Returns successful data submission message when the entered information is stored in database. 
      var dataString = 'username1='+ username + '&password1='+ password; 
      if(username==''||password=='') { 
      alert("Please Fill All Fields"); 
      } else { 
      // AJAX Code To Submit Form. 
      $.ajax({ 
       type: "POST", 
       url: "ajaxsubmit.php", 
       dataType: "json", 
       data: dataString, 
       success: function(data){ 
        alert(data.no); 
       } 
      }); 
      } 
     return false; 
     }); 
    }); 
</script> 
+0

如果你的$ formd變量是空數組,它將不會被顯示。嘗試與另一個變量。然後改爲使用'console.log(data);' –

+0

使用瀏覽器'console',一個功能強大的工具,如果你知道如何使用它 –

+0

你的PHP腳本有兩個回聲,所以返回的數據將是第一個回聲而不是json_encode 。刪除除了'echo json_encode($ formd);'之外的所有回顯;或者刪除警報中的data.no,並僅將數據 –

回答

0

你的PHP代碼有2個echo語句

if((password_verify($password2,$pass))and($count==1)) 
{ 
    echo "ds"; // first 
} 
else 
{ 
    echo "no"; // first 
    $formd['no']="Invalid password or username" 
} 
    mysqli_close($db); // Connection Closed 
    echo json_encode($formd); // second 

這樣,你的PHP腳本返回畸形的JSON數據,因此$.ajax()不能處理它。 另外,正如其他人指出的那樣,請使用開發人員控制檯驗證您的腳本是否會返回預期的數據。

0

你的PHP腳本的if else部分有一個echo語句,然後在外面如果你回聲數組$ formd。這違反了JSON響應。另外,你應該使用exit(1),因爲你的代碼中沒有異常。 這裏是你應該用來獲取腳本工作的片段。

if((password_verify($password2,$pass))and($count==1)) 
{ 
echo "ds"; 
} 
else 
{ 
// echo "no"; this is not required 
$formd['no']="Invalid password or username" 
} 
mysqli_close($db); // Connection Closed 
echo json_encode($formd); 
exit(1);