2014-09-24 52 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); 
    } 
});