2014-09-24 46 views
1

我想設置一個div標籤來顯示一條消息,如果用戶在數據庫中找不到。AJAX和HTML元素不工作

這是行中我不能去工作:

$("message").html(msg); 

如果你能幫助我理解我在做什麼錯了,它會有所幫助。由於

$(document).ready(function(){ 
    $("#submit").click(function(){ 
     var username = $("#username").val(); 
     var code = $("#code").val(); 
     var msg = "Who are you?!"; 
     var dataString = 'username='+ username + '&code='+ code; 
     localStorage.setItem("number",code); 
     if(username==''||code=='') 
     { 
      alert("Um..you are missing something..."); 
     } 
     else 
     { 
      $.ajax({ 
       type: "POST", 
       url: "verify.php", 
       data: dataString, 
       cache: false, 
       success: function(result){ 
        if(result != 0) 
        alert(result); 
       }, 
       error: function(){ 
        $("message").html(msg); 
       } 
      }); 
     } 
     return false; 
    }); 
}); 

我的PHP代碼

<?php 
    $username = trim($_POST["username"]); 
    $code = trim($_POST["code"]); 

    include_once './inc/config.php'; 
    $con = new mysqli(HOST, USER, PASSWORD, DATABASE); 

    $sql="SELECT * FROM info WHERE First_Name='".$username."' AND Line_Number='".$code."'" ; 
    // Check connection 
    if (mysqli_connect_errno()) { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

    $result = mysqli_query($con,$sql); 
    $num_rows = mysqli_num_rows($result); 

    if($num_rows != 0){ 
     echo true; 
    } 
    else{ 
     //echo "Who are you?!"; 
     return false; 
    } 
mysqli_free_result($result); 
mysqli_close($con); 
+0

'$( 「信息」)HTML(MSG);'是錯誤的...什麼是'message'?它是'id'還是'class'?基於你需要使用ID選擇器或類選擇器 – 2014-09-24 02:22:19

回答

1

如果您的信息元素具有IDmessage,選擇它是這樣的:

$("#message").html(msg); 

如果有message,選擇它是這樣的:

$(".message").html(msg); 

JQuery documentation包含概述和所有選擇器類型的深入描述。


另外,觸發錯誤的方法在JavaScript,你的服務器端代碼需要發送一個HTTP錯誤代碼,例如這樣的:

header("HTTP/1.1 404 Not Found"); 

或者這樣:

http_response_code(404); 
+1

感謝所有人!我學到了一些新東西,並讓它起作用! – 2014-09-24 02:34:58

0

要定位與ID消息使用一個div

$("#message") 

你已經錯過了#

試試這個:

$.ajax({... 
    success: function(data){ 
     if(data) 
      $("#message").html (msg); 
     else 
      alert(data); 
    } 
}); 
+0

謝謝,但沒有奏效 – 2014-09-24 02:22:16

0

message一個類或ID?確保您使用適當的選擇器來顯示您的輸出。

+0

消息一個id。 – 2014-09-24 02:24:00

+0

@Ana Bee:那麼作爲選擇器的是什麼'message'? – 2014-09-24 02:30:31

+0

消息是一個div標籤的id。 – 2014-09-24 02:33:01

0
error: function(){ 
    $("message").html(msg); 
    } 

當用戶沒有找到時,您是否使用404或其他任何內容(除2xx之外)進行響應?而且,是的,選擇器是不正確的。只有在向服務器發送請求期間發生HTTP錯誤時,纔會調用您的函數。

else{ 
    //echo "Who are you?!"; 
    return false; 
} 

不會運行功能。 This

else{ 
    //echo "Who are you?!"; 
    header("HTTP/1.0 404 Not Found"); 
    exit; 
} 

可以做到這一點,但不是一個很好的解決方案。最好的一個是返回這樣的

$response = array('status' => 'failed', 'text' => 'Whatever'); 
header('Content-type: application/json'); 
echo json_encode($response); 
exit; 

,並與您的數據成功功能的工作,檢查「狀態」等。

+0

我已經添加了我的php代碼。我希望這有助於。我不清楚你在問什麼。 – 2014-09-24 02:27:38

+0

你的php不會觸發錯誤功能。你要麼返回http 404,要麼返回帶有狀態和數據的json對象,並且在成功函數中使用它。 – Cheery 2014-09-24 02:29:01

+0

啊。 ajax請求尋找什麼?服務器錯誤代碼? – 2014-09-24 02:29:57

0

使用,#代表id和。對於類 錯誤:函數(){ $(「#message」)。html(msg);

0

除了message選擇器中的明顯錯誤之外,我可以看到的另一個問題是您的代碼在您的PHP中。

您的php代碼不返回錯誤條件,它返回true或false,因此總是會調用您的成功回調函數。

所以

if($num_rows != 0){ 
    echo true; 
} 
else{ 
    //echo "Who are you?!"; 
    echo false; 
} 

然後

$.ajax({ 
    type: "POST", 
    url: "verify.php", 
    data: dataString, 
    cache: false, 
    success: function (result) { 
     if (result) { 
      alert(result); 
     } else { 
      alert(msg); 
      //make sure you use a proper selector here 
      $("message").html(msg); 
     } 
    }, 
    error: function() { 
     $("message").html(msg); 
    } 
});