JQuery:将HTML添加到父分区作为AJAX的结果
JQuery: Add HTML to Parent Div as Result of AJAX
我不太明白如何将从AJAX调用中检索到的HTML添加到PHP函数中。
首先,这里是AJAX函数:
function selectListAJAX(fieldId, newclass){
$.ajax({
url: "http://brand.emich.edu/forms-and-tools/sections/departmental/university-archives/monthly/ajax-selectbox.php",
type: "POST",
data: { field_id: fieldId },
success: function(response){
$(newclass).html(response);
},
error: function(){
alert("Error");
}
});
}
这里是应该添加HTML的地方:
$(this).parent().parent().after('
<div class="form-group '+ field_name +'-row row">
<div class="col-sm-6">
<input type="text" name="'+ field_name +'[]" class="form-control item-field">
</div>
<div class="col-sm-3 selectajax">'+
selectListAJAX(newFieldId, selectajax) +'
</div>
<div class="col-sm-3 add-field">
<input type="number" name="'+ field_name +'qty[]" class="form-control align-right ' + field_name + 'qty">
</div>
</div>
');
我已经尝试了几种向函数添加参数的变体,等等,但我能想到的最好的方法是在div中放置一个大的"未定义",而不是响应。
哦,如果有人能解释为什么我必须把.after()中的代码拼凑在一起,浏览器才能理解它,那就加分了。我查看了以前的线程,看到了带有"''"的转义行,但这似乎不起作用。
问题是selectListAjax()没有返回值。对结果响应的所有处理都应该在ajax调用的success()处理程序中,因为ajax调用(根据定义)是异步的。请注意,该方法也可能在success()处理程序完成之前返回。
从小处着手。
Try(html):
<div>
<div class="target"></div>
</div>
(脚本):
$.ajax({
url: "http://brand.emich.edu/forms-and-tools/sections/departmental/university-archives/monthly/ajax-selectbox.php",
type: "POST",
data: { field_id: fieldId },
success: function(response){
$('.target').html(response);
},
error: function(){
alert("Error");
}
});
当您调用selectListAJAX:时
<div class="col-sm-3 selectajax">'+
selectListAJAX(newFieldId, selectajax) +'
</div>
selectajax是一个变量,您可以在ajax的成功中使用它作为选择器。如果你想通过选择器,它需要像这样的字符串:
<div class="col-sm-3 selectajax">'+
selectListAJAX(newFieldId, + 'selectajax' +) +'
</div>
正如Keith所说:"所有对结果响应的处理都应该在success()处理程序中…"这是正确的。然而,也出现了一个问题,当创建另一个选择框时,所有现有的选择框也会被重新创建,因为我要求jQuery用一类"select"AJAX替换everydiv中的HTML。
为了将列表仅添加到新创建的div,还必须为该div动态创建一个ID:
success: function(response){
var numberOfLists = $('.'+fieldName+'selectajax').length;
$('.'+fieldName+'selectajax').each(function(index, element) {
if(index == numberOfLists -1){
var idOfLast = $(this).attr('id', 'currentselectajax');
$(idOfLast).html(response);
} else {
$(this).removeAttr('id');
}
});
},
首先,收集数组的长度(给定类的div数量)。然后,对于每一个,找到最后一个(长度-1)。对于最后一个,为它创建一个ID,并使用.html(response)将响应转储到其中。对于所有其他的,删除ID属性,以避免更改这些div中的html。
- 在foreach中获取ajax结果
- 使用blob从ajax结果下载文件
- PHP,MySQL,AJAX-调用AJAX结果后,Bootstrap CSS样式不会显示
- 在文本框中显示ajax结果
- 从回调函数返回 AJAX 结果
- 将AJAX结果作为道具传递给子组件
- 使用passthrough将ajax结果中的变量发送到php
- 等待ajax结果绑定淘汰模型
- 如何重置AJAX结果输入字段
- jquery不解析ajax结果
- 为什么我不能返回 $.ajax 结果,但可以返回 $http.post 的结果
- Javascript:将 AJAX 结果保存为 Class 变量
- Ajax 结果取决于 PHP 结果
- 在 ajax 结果中获取此内容
- 动态处理 ajax 结果
- 在视图页面上显示 AJAX 结果 jQuery
- Ajax 结果显示未定义
- 如何使用 AJAX 结果在点击功能
- 使用 jQuery 在 Ajax 结果中查找节点
- 返回到 ajax 结果页面上上次看到的位置