在Jscript弹出窗口中显示PHP结果

时间:2014-03-03 16:28:18

标签: javascript php html mysql ajax

我希望用户能够通过输入一些细节来检查数据库中的号码。然后,此数字将显示在javascript警报中。

我的索引页面包含用户输入,如下所示:

<script type="text/javascript">
    function check()
    {
        $.ajax({
            url: "checkpna.php",
            type: "POST"})
    }

    function show_alert()
    {
        alert(check())
    }


</script>


<form action="#" method="get" class="formubuntu" onSubmit="return submitForm()">
    <p>Check Pallet PNA Number &nbsp;<input name="lpn" id="lpn_0" type="text" style="border-top-left-radius: 4px 4px; border-top-right-radius: 4px 4px; border-bottom-right-radius: 4px 4px; border-bottom-left-radius: 4px 4px; margin-right: auto; margin-left: auto;" value="Pallet LPN">
    &nbsp;<input name="submit" type="submit" value="Submit" class="art-button" onclick="show_alert()"></p>
</form>

和checkpna.php检查数据库中的具体细节:

$mysqli = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);

if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

if($_GET['submit'] == "Submit")
{
    $lpn = $_GET["lpn"];

}

$values = array();

$query = "select serial_number from t_container where container_number = '".$lpn."';";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);

if($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo stripslashes($row['serial_number']);
    }
}

else {
    echo "NO RESULTS";
}

?>

但是我得到一个未定义的弹出窗口。我做错了什么?

4 个答案:

答案 0 :(得分:2)

函数check不会返回任何内容(因此undefined)。

如果您执行return $.ajax() 会返回某些内容,但是什么?它返回Promise。承诺是未来价值的容器,是我们尚未拥有的价值。我们还没有价值的原因是因为请求还没有完成,它才刚刚开始。

您可以将代码更改为:

function check() {
    return $.ajax(/* .. */);
}
function show_alert() {
    check().done(function (result) {
        alert(result);
    });
}

您的PHP代码存在一些严重问题。 工作,但它不安全。阅读SQL注入并查看验证输入(检查submit,但不检查lpn)。

答案 1 :(得分:0)

你想要这样的东西:

    $.ajax({
        url: "checkpna.php",
        type: "POST"})
     .done(function( data ) {
        alert(data);
     }

答案 2 :(得分:0)

您无法立即发出警报,您必须等到从服务器收到Ajax请求的答案。只需添加回调函数即可在结果到达时执行此操作。

https://api.jquery.com/jQuery.ajax/

function check()
    {
        $.ajax({
            url: "checkpna.php",
            type: "POST",
            complete: function(return) {
                alert(return);
            }
        })
    }

    function show_alert()
    {
        check();
    }

答案 3 :(得分:0)

我相信对于ajax请求,当成功并从该回调发出警报时,您需要回调

来自jQuery doc

  

成功类型:Function(PlainObject数据,String textStatus,jqXHR   jqXHR)请求成功时调用的函数。功能   传递三个参数:从服务器返回的数据,   根据dataType参数格式化;一个字符串描述   状态;和jqXHR(在jQuery 1.4.x,XMLHttpRequest)对象。作为   jQuery 1.5,成功设置可以接受一系列函数。每   函数将依次调用。这是一个Ajax事件。

<script type="text/javascript">
    function show_alert()
    {
        $.ajax({
            url: "checkpna.php",
            type: "POST",
            success: function (data) {
                alert(data);
            }
        });
    }
</script>