Event.prevent()默认ajax不将数据从表单发送到php
我已经检查了这个答案,但所有的问题都是不同的,只是同一个标题(以防止随机重复标记)。 这里是一个ajax调用,用于单击过滤器按钮,该按钮应将插入表单formmatcat中的数据发送到php文件formfilt.php,并应将结果加载到id为resultins的div中Event.prevent()默认ajax不将数据从表单发送到php,php,html,ajax,Php,Html,Ajax,我已经检查了这个答案,但所有的问题都是不同的,只是同一个标题(以防止随机重复标记)。 这里是一个ajax调用,用于单击过滤器按钮,该按钮应将插入表单formmatcat中的数据发送到php文件formfilt.php,并应将结果加载到id为resultins的div中 <script> $(function () { $('#filter').on('click', function(event){ event.preventDefault();
<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>
您正在做的是向
formfilt.php
发送一个AJAX请求,当这个调用发生并返回响应时,它将作为参数存储在success
或$函数中。我将在后面提到,done
函数就是您的echo
'd内容所在的位置
这里要做的是,当调用成功时,只需向同一页面发送GET
请求。由于该GET
请求不同于AJAXPOST
请求,并且没有POST
参数,因此无法获得正确的输出
通过简单地提交表单并让它进入页面,而不是取消请求,当您使用正确的值直接发布到页面时,您得到了正确的值,当您调用load
函数时,您正在执行一个单独的AJAX get请求
实际上,它大致等同于$.get
,它是$.ajax
的缩写
jqXHR.done(函数(数据、文本状态、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>
$(函数(){
$(“#过滤器”)。在('click',函数(e)上{
e、 预防默认值();
$.ajax({
键入:“post”,
url:'formfilt.php',
数据:$('#formmatcat')。序列化()
}).完成(功能(数据){
$('#resultins').html(数据);
});
});
});
然后,它将继续将
formfilt.php
的输出加载到ID为resultins
的div中。不要使用表单,使用不带表单的输入,使用按钮标记use 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);
对不起,我也在学习,而且是新来的,一周前刚刚学习,此功能是否附加到
提交
按钮或标准的按钮
?表单中的提交按钮如果是提交按钮,请尝试将其更改为标准按钮,即:
~而且成功
回调显示为重新加载同一页面~它应将响应填充到div中,问题是.load,为什么不工作,.html工作?我用.load在其他表单上做了同样的事情,它起作用了$。load
起作用了,但它对文件应用了一个单独的请求,我们以前没有使用实际第一次调用的ajax输出,现在我们是-唯一的区别;)
xhttp.open("POST", "formfilt.php", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send('filter='+CB);