簡體   English   中英

我可以使用PHP從JQuery AJAX請求返回輸出狀態嗎?

[英]Can I return an output status from a JQuery AJAX request with PHP?

我有一個AJAX請求(使用JQuery),該請求調用執行某些數據庫業務的PHP腳本。 請求代碼如下:

$.ajax({
    url: "script.php",
    data: { value: value
        },
    type: 'post',
    success: function(output){
        alert(output);
    }
});

但是,我想看看是否有一種方法(除了未更改的輸出字符串)還返回狀態。 它可以像整數一樣簡單。 關鍵是,如果PHP腳本由於任何原因無法連接到mySQL,我想禁用按鈕(使用Javascript),但是我仍然希望PHP腳本能夠完全輸出。

我嘗試了錯誤選項:

...
success: function(output){
        alert(output);
    },
error: function(output){
        // do something
    }

但我不知道如何使PHP顯示錯誤並繼續執行腳本的其余部分。 同樣,我完全不想篡改輸出字符串。

用偽代碼,我正在尋找這樣的東西:

$.ajax({
    url: "script.php",
    data: { value: value
        },
    type: 'post',
    success: function(output){
        if(output.status == 0){
            alert(output);
        }else{
            // do something else
        }
    }
});

有什么可能的嗎? 感謝您提供的所有幫助!

我通常以JSON格式從服務器返回數據。 這樣,我可以返回javascript成功函數可能需要的多種不同類型的數據。

基本上在PHP中,你會做類似

$response = new stdClass();
$response->error = 'Could not connect to Mysql';
$response->message = 'Some other text';
echo json_encode($response);

在JQuery中,ajax()方法將自動檢測到響應為json並將其解析為javascript對象,因此您可以像這樣訪問

if (typeof response.error !== undefined) alert(response.error);

有關更多信息,請查看jQuery文檔中ajax()方法的dataType參數。

是。 您可以使用HTTP狀態代碼:

header('HTTP/1.1 500 Internal Server Error');

並為jQuery.ajax()使用jQuery的statusCode屬性:

$.ajax({
    // stuff
    statusCode: {
        500: function(data) {
            alert('Something went wrong!');
        }
    }
});

如果您的需求超出了HTTP所能提供的范圍,則只需在數據中返回狀態碼並在success函數中對其進行處理,然后打開data.status

如果我沒有誤解你的問題...

我通常要做的是將AJAX調用的數據類型設置為“ xml”,然后從我的PHP腳本輸出xml。 所以我得到了多個值。 我通常會設置這些屬性值。

<result status="success" something="etc" />
// vs.
<result status="failure" error="1" />
// consider 1 as the DB error

使用這種方法,您可能需要在某些PHP函數中使用@標記,以防止輸出默認錯誤。

暫無
暫無

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

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