2017-07-07 152 views
1

我使用下拉菜單,用戶可以選擇特定的主題。如果通過下拉菜單選擇主題,則通過ajax彈出文本框,用戶可以輸入內容。刷新頁面後,從on.Change函數重新加載Ajax內容

問題是,如果表單已被提交,表單中的內容丟失或者用戶只是刷新頁面,則當選擇另一個主題時,ajax內容(文本框)會消失並且只會再次出現。

這大概是從我的AJAX腳本,它使用change,因此只有當下拉再次改變提出了ajax輸入到DIV莖:

$(function() { 
$('#subjectapp1').change(function() 
{ 
var self = $(this); 

$.post("/blabla/potatoe/subjectpartial1.php", 
{ 
subject1: self.val() 
}, 
function(data) 
{ 
    $('#subjectqualidiv1').html(data); 
}); 

}); 
}); 

我的下拉菜單:

<select name="subject1" id="subjectapp1"> 
<option value="">Please choose</option> 
<?php foreach ($subjects as $subject){ ?> 
    <option <?php if ($_POST['subject1'] == $fach['subject_id']) {echo 'selected';} ?> value="<?php echo $subject['subject_id']; ?>"><?php echo $subject['subject']; ?></option> 

股利它被加載到:

<div id="subjectqualidiv1"></div> 

Ajax的內容(subjectpartial1.php)只包含一個文本框,在其中用戶可以輸入自己的資格。

有沒有一種可能,當頁面刷新,而無需再次更改主題的AJAX內容自動加載到DIV?

EDIT(工程):基礎上的評論我嘗試以下,這將產生預期的結果:

$(document).ready(function() { 
// For loading the ajax content on refresh/form submit 
    var subject1 = $('#subjectapp1'); 

$.post("/blabla/potatoe/subjectpartial1.php", 
{ 
subject1: subject1.val() 
}, 
function(data) 
{ 
    $('#subjectqualidiv1').html(data); 
}); 

$('#subjectapp1').change(function() 
{ 
var self = $(this); 

$.post("/blabla/potatoe/subjectpartial1.php", 
{ 
subject1: self.val() 
}, 
function(data) 
{ 
    $('#subjectqualidiv1').html(data); 
}); 

}); 
}); 

謝謝!

+1

是 - 你可以直接把AJAX的文件準備好處理程序。您還需要能夠從更改事件中調用它。 –

+1

在'onchange'事件中仍然能夠調用你的代碼的最佳方式是將它放入一個函數,然後從'$(document).ready()'函數內調用它,這是在頁面加載時執行。 –

回答

1

您可以添加你的函數調用你的AJAX的$(document).ready()函數執行的頁面加載。執行你的函數之前要小心檢查有效的數據,因爲可能有頁面加載和選擇器爲空的情況。對於缺少的信息,您可能需要查看HTML中的required屬性,如果該元素不存在數據,將阻止表單提交。這將防止刷新數據不足。

+0

我將代碼插入'$(document).ready()'函數以及事件的觸發器,現在它可以工作,謝謝!你是什​​麼意思檢查有效數據?當值不爲空時,它不僅僅是被解僱嗎? – Franky2207

+0

刷新或初次加載頁面時,會在頁面加載時調用'$(document).ready()',但由於這些事件的默認瀏覽器行爲,大多數數據應爲空。由於這個原因,您的AJAX調用在ready函數中調用時可能會有空變量,並可能返回錯誤或意外結果。 – yanman1234

1

您可以與您現有的代碼一起做:

$(document).ready(function() { 
$("#subjectapp1").trigger('change'); 
} 
相關問題