我已经检查了这个答案但是所有问题都是同一个标题(防止随机重复标记)。 这是对点击过滤器按钮的ajax调用,该按钮应将以 formmatcat 格式插入的数据发送到php文件 formfilt.php 并应将结果加载到ID为 resultins
的div中<script>
$(function () {
$('#filter').on('click', function(event){
event.preventDefault();
$.ajax({
type: 'post',
url: 'formfilt.php',
data: $('#formmatcat').serialize(),
success: function () {
$("#resultins").load('formfilt.php');
}
});
});
});
</script>
我将preventdefault
设置为仅在div中加载而不重定向到php文件,这可行但如果我放preventDefault
它通过连接从表单发送的值来回显我构建的字符串那些空值。奇怪的是,如果我删除preventDefault
当然它会重定向并加载php文件但是具有正确的值:
故事的道德,带有ajax调用的表单中的数据正确地转到php文件,但看起来像preventDefault不要这样。提前致谢
这里是带有
形式的html部分的结构<form id="formmatcat" method="post" action="formfilt.php">
.
.
various textboxes
.
.
</form>
答案 0 :(得分:0)
您正在做的是向formfilt.php
发送AJAX请求,当此调用发生并返回响应时,它将作为参数存储在success
或$.done
函数中正如我稍后会提到的那样,这就是你的echo
d内容。
您在此处所做的是,当通话成功时,您只需向同一页面发送GET
请求即可。由于GET
请求与AJAX POST
请求不同,并且没有POST
参数,因此您无法获得正确的输出。
当您致电load
时,只需提交表单并让其转到页面而不是取消请求即可获得正确的值,因为您直接发布到具有正确值的页面函数你正在做一个单独的AJAX get请求。
实际上load
是$.get
的粗略等同物,它是$.ajax
的简写。
jqXHR.done(function(data,textStatus,jqXHR){}); 成功回调选项的替代构造,.done()方法替换了不推荐使用的jqXHR.success()方法。有关实现的详细信息,请参阅deferred.done()。
基本上,$.ajax()
调用会返回一个promise对象,您可以在完成后链接回调。另请注意,此处的data
将是PHP文件中的实际内容,因此如果您重写AJAX调用,请执行以下操作:
<script type="text/javascript">
$(function() {
$('#filter').on('click', function(e) {
e.preventDefault();
$.ajax({
type: 'post',
url: 'formfilt.php',
data: $('#formmatcat').serialize()
}).done(function(data) {
$('#resultins').html(data);
});
});
});
</script>
然后,它会继续将formfilt.php
的输出加载到ID为resultins
的div中。
答案 1 :(得分:0)
不要使用表单,使用没有表单的输入,并使用按钮标签使用onclick运行功能,如果你使用表单,它将提交和重定向, 我对jQuery的ajax不太满意 但如果我要使用javascript / XHR
var CB=document.getElementById("filter").value; //get input/filter value
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200)
document.getElementById('contain').innerHTML=xhttp.responseText;
};
var url="formfilt.php?filter="+CB;
xhttp.open("GET", url, true);
xhttp.send();
如果你想使用post:
xhttp.open("POST", "formfilt.php", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send('filter='+CB);
抱歉,我也在学习,而且刚刚学习,只是在一周前学习,