簡體   English   中英

在Jscript彈出窗口中顯示PHP結果

[英]Show PHP result in Jscript Pop-up

我希望用戶能夠通過輸入一些細節來檢查數據庫中的數字。 然后,此數字將顯示在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";
}

?>

但是我得到一個未定義的彈出窗口。 我究竟做錯了什么??

函數check不返回任何內容(因此undefined )。

如果你確實return $.ajax()返回一些東西,但是什么? 它返回一個Promise 承諾是未來價值的容器,是我們尚未擁有的價值。 我們沒有價值的原因是因為請求尚未完成,它才剛剛開始。

您可以將代碼更改為:

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

您的PHP代碼存在一些嚴重問題。 有效 ,但不安全。 閱讀SQL注入並查看驗證輸入(檢查submit ,但不檢查lpn )。

你想要這樣的東西:

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

您無法立即發出警報,您必須等到從服務器收到Ajax請求的答案。 只需添加回調函數即可在結果到達時執行此操作。

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

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

    function show_alert()
    {
        check();
    }

我相信對於ajax請求,當成功並從該回調發出警報時,您需要回調

來自jQuery doc

success類型:Function(PlainObject data,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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM