Event.prevent()默认ajax不将数据从表单发送到php

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

我已经检查了这个答案,但所有的问题都是不同的,只是同一个标题(以防止随机重复标记)。 这里是一个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>

您正在做的是向
formfilt.php
发送一个AJAX请求,当这个调用发生并返回响应时,它将作为参数存储在
success
$函数中。我将在后面提到,done
函数就是您的
echo
'd内容所在的位置

这里要做的是,当调用成功时,只需向同一页面发送
GET
请求。由于该
GET
请求不同于AJAX
POST
请求,并且没有
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);