php - 刷新页面后,从on.Change函数重新加载Ajax内容

原文 标签 php jquery ajax

我使用一个下拉菜单,用户可以在其中选择特定主题。如果通过下拉菜单选择主题,则通过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:

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


Ajax内容(subjectpartial1.php)仅包含一个文本框,用户可以在其中输入其资格。

页面刷新时是否有可能将ajax内容自动加载到div中,而无需再次更改主题?

编辑(工作):根据评论,我尝试了以下操作,从而产生了所需的结果:

$(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);
});

});
});


谢谢!

最佳答案

您可以将调用AJAX的函数添加到在页面加载时执行的$(document).ready()函数中。在执行功能之前,请小心检查有效数据,因为在某些情况下,页面加载且选择器为空。对于缺少的信息,您可能需要查看HTML中的required属性,如果该元素不存在任何数据,它将阻止表单提交。这样可以防止刷新数据不足的情况。

关于php - 刷新页面后,从on.Change函数重新加载Ajax内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44970732/

相关文章:

javascript - 如何在使用PHP进行删除查询之前从用户获得删除确认

php - PHP使用mysqli从数组插入MySQL

php - MYSQL SELECT JOIN 有条件

javascript - 用于 AngularJS 的 jQuery "$.when().done()"

c# - ajax jquery post,初学者需要一些微调

javascript - 从 AngularJS 中的工厂/服务修改 $scope

php - PHP IF ELSE-如果似乎被忽略了?

javascript - iOS 11 getUserMedia无法正常工作?

javascript - 如何比较没有ID或类的两个元素jQuery

jquery - 多个选择器或多功能-任何效率提高?