我有一個用php編寫的主頁,我使用Ajax在給定的div
中加載「模塊」。當然,我剝去了一些代碼,但我認爲主要的東西在那裏:調用load()
,檢查成功(或不)ajax請求,並檢查js變量「返回」從PHP(我'稍後會解釋這一點);這是JavaScript:在由Ajax加載的php模塊中使用javascript,即使請求已成功也返回錯誤值
var ajax_error = ""; //i use this to catch load errors
//.....//
$("#div_target").load("loadmodule.php", {'module':module_number}, function(response, status, xhr)
{
if (status == "error") //this is for ajax-related errors
{
alert('Failed loading module. Error: '+xhr.status + " " + xhr.statusText);
}
else
{
//this checks if the variable has been set by the php module to represent an error
if (ajax_error !== "")
{
$("#div_target").html(ajax_error); //show the error instead of the module
ajax_error = ""; //we reset the variable for future uses
}
else
{
//do something with the correctly loaded module..
}
}
});
即「loadmodule.php」是後續(再次,代碼減少):
//check for the post value, that should be a positive number as well as check for the file to exist
if (
isset($_POST['module'])
&& is_numeric($_POST['module'])
&& ($_POST['module'] > 0)
&& file_exists("module_" . $_POST['module'] . ".php")
)
{
//include module
include("module_{$_POST['module']}.php");
}
else
{
//error retrieving module
?>
<script type="text/javascript">
ajax_error = "Cannot load module." ;
</script>
<?php
}
這種方式,在任何錯誤的情況下,同時檢查該$_POST['module']
,我們可以通過設置變量ajax_error
來「告訴」javascript發生了錯誤,該變量在ajax成功完成請求後將被「捕獲」。一切運作良好(這個變量ajax_error
的背景是正確的,即使它看起來並不真實,在這裏的剝離代碼:P),但..
..我的問題是(是) :這種方法是否正確?這樣做有什麼問題嗎?有沒有什麼東西看起來不像解決方法?還是我在這種情況下做的最好?
PS:我發現很難提供一個標題,我的問題,希望這是好的:)
這應該可能張貼在http://codereview.stackexchange.com/ – 2013-03-08 15:36:05
@MatthewBlancarte也許我在codereview和stackoverflow之間的邊緣..如果其他人認爲同樣的事情,我會在那裏移動我的問題: ) – 2013-03-08 15:44:25