Проблема Ajax - PullRequest
       6

Проблема Ajax

0 голосов
/ 01 сентября 2011

Как сделать это правильно для ajax?Спасибо за помощь!

Вот код формы

<form action="" method="post">
    <p>Search for a name:</p>
    <p><input type="text" name="name" id="name" /></p>
    <input type="submit" name="submit" id="submit" value="Search Name" />
</form>
<div id="output"></div>

и javascript под ним

    $("input#submit").click(function(){
        var name_val = $("input#name").val();
        $.ajax({
            type: "POST",
            url: "select.php",
            dataType: "json",
            data: { 
                name: name_val 
            },
            success: function(data){
                if(data.error == true){
                    $("#output").append("<p>"+ name_value +" is on the list.</p>");
                } else {
                    $("#output").append("<p>"+ name_value +" is not the list.</p>");
                }
            }
        });
    })

</script>

, а вот код внутри select.php

if(isset($_POST['submit'])){
    $name = $_POST['name'];

    $sql = "SELECT * FROM persons WHERE FirstName = '{$name}'";
    $result = mysql_query($sql, $con);
    if(!$result){
        die("Database query failed: ". mysql_error());
    }

    while($row = mysql_fetch_array($result)){
        if(in_array($name, $row)){
            $return['success'] = true;
            echo json_encode($return);
        } else {
            $return['success'] = false;
            echo json_encode($return);
        }
    }
}

Ответы [ 3 ]

1 голос
/ 01 сентября 2011

вместо $("input#submit").click(function(){...

До

$("form#formID").submit(function(){

    $.ajax({
        type: "POST",
        url: "select.php",
        dataType: "json",
        data: $(this.serialize(),
        success: function(data){
            if(data.error == true){
                $("#output").append("<p>"+ name_value +" is on the list.</p>");
            } else {
                $("#output").append("<p>"+ name_value +" is not the list.</p>");
            }
        }
    });
    return false; //remember this

});
0 голосов
/ 01 сентября 2011

Исходя из вашего кода, вам не нужно if(isset($_POST['submit'])).

Каковы ваши результаты?Что возвращается из jQuery.

Попробуйте использовать это в своем PHP-файле:

$name = $_POST['name'];

    $sql = "SELECT * FROM persons WHERE FirstName = '{$name}'";
    $result = mysql_query($sql, $con);
    if(!$result){
        die("Database query failed: ". mysql_error());
    }

    while($row = mysql_fetch_array($result)){
        if(in_array($name, $row)){
            $return['success'] = true;
            echo json_encode($return);
        } else {
            $return['success'] = false;
            echo json_encode($return);
        }
    }

РЕДАКТИРОВАТЬ:

Вам не нужно if(isset($_POST['submit'])).Причина в том, что isset проверяет, есть ли отправка isset.Этот метод обычно используется при отправке формы на ту же страницу.Вам это не нужно, потому что вы уже проверяете это с помощью jQuery, а также не публикуете его через свой ajax.

Чтобы проверить, работает ли вызов, почему бы вам не вставить это в свой PHP:

if(in_array($name, $row)){
   echo 'success';
 } else {     
    echo 'fail';
 }

Тогда для вас ajax:

if(data == "success"){
  $("#output").append("<p>"+ name_value +" is on the list.</p>");
} else {
 $("#output").append("<p>"+ name_value +" is not the list.</p>");
}

Если это работает, это работает, это говорит о том, что есть проблема с вашим вызовом ajax.Дайте мне знать ваш результат.

0 голосов
/ 01 сентября 2011

обычно полезно включить ловушку ошибок в ваш ajax:

$.ajax({
            type: "POST",
            url: "select.php",
            dataType: "json",
            data: { 
                name: name_val 
            },
            success: function(data){
                if(data.error == true){
                    $("#output").append("<p>"+ name_value +" is on the list.</p>");
                } else {
                    $("#output").append("<p>"+ name_value +" is not the list.</p>");
                }
            },
        error: function(x,e){
            alert(x.readyState + " " + x.status + " " + e.msg);
        }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...