我有一個簡單的複選框,通過查詢數據庫打開或關閉。用戶可以更改此值,並通過ajax
發送請求。該網址是古怪的,因爲它是一個Joomla組件(這個問題不重要,但以防萬一)。缺乏jQuery的Ajax成功設置
$(function() {
$("#iButton").iButton();
$('#iButton').change(function() {
var checkedLength = $(this + ':checked').length;
if(1 == checkedLength){
$.ajax({
url: 'index.php?option=com_mycomponent&task=globaldetection&id_hash=<?php echo $id_hash; ?>&global_monitoring='+checkedLength+'&format=raw'
});
} else {
$.ajax({
url: 'index.php?option=com_mycomponent&task=globaldetection&id_hash=<?php echo $id_hash; ?>&global_monitoring='+checkedLength+'&format=raw'
});
}
});
});
<?php
//highlight whether the checkbox is on or off
if ($userstatus == "ENABLED") //get this value from server
{
//turned on
$global_monitoring = "checked=\"checked\"";
}
else
{
$global_monitoring = "";
}
?>
<div class="dropshadow">
<p id="iButtontext">
<input type="checkbox" id="iButton" <?php echo $global_monitoring; ?> name="iButton_checkbox" />
</p>
</div>
這工作正常,如我所料,但我這裏有幾個問題:
- 我複製
ajax
功能的兩倍取決於條件。有沒有更好的方法來做到這一點或完全可以接受? - 我只傳入網址,沒有其他設置。我一直使用
success
設置,但在這種情況下,我不需要做其他響應。我知道這是可選的,但我應該在那個時候做其他事情嗎? - 我應該傳入ajax的其他設置?它看起來太...簡單。
任何指導表示讚賞。謝謝。
兩個ajax請求都是** IDENTICAL **。爲什麼你有兩個然後? – zerkms
它們不相同,checkedLength是1或0.所以我可以在url上放一個if語句,而不是重複整個'ajax'調用。雖然我不確定這是否可能,但無論哪種方式,這都是第1個問題,必須有更好的方法 – Tom
@zerkms有一點,刪除if。使用變量checkedLength使得if冗餘。另外,查詢字符串中的PHP是否做你打算做的事情? –