Javascript 当我发送数据时,Ajax给了我一个错误

Javascript 当我发送数据时,Ajax给了我一个错误,javascript,ajax,forms,jquery,Javascript,Ajax,Forms,Jquery,我正试图通过Ajax提交表单,但我无法提交。我有多个表格,我正在使用(这个)提交数据。我从错误中获取错误:0 error。警报消息显示我具有该值 <script type="text/javascript"> $(document).ready(function() { $(".submitform").click(function (){ alert ($(this).parent().serialize()); $.ajax({

我正试图通过Ajax提交表单,但我无法提交。我有多个表格,我正在使用(这个)提交数据。我从错误中获取错误
:0 error
。警报消息显示我具有该值

<script type="text/javascript">
$(document).ready(function() {

    $(".submitform").click(function (){
        alert ($(this).parent().serialize());
        $.ajax({
                type: "POST",
                url: "reply_business.php",
                timeout:5000,
                data: $(this).parent().serialize(),
                beforeSend: function(xhr){
                    $('#load').show();
                },
                success: function(response){
                    $(this).parent().find('.sentreply').append(response);
                    $('.sentreply div:last').fadeOut(10).fadeIn(2000);
                    //uncomment for debugging purposes
                    //alert(response);
                },
                error: function(jqXHR) {
                   alert ('From error:' + jqXHR.status + ' ' +jqXHR.statusText);
                },
                complete: function(jqXHR, textStatus){
                    //uncomment for debugging purposes
                    //alert ('From complete:' + jqXHR.status + ' ' +jqXHR.statusText + ' ' + textStatus);
                    $('#load').hide();
           }
        });

    });
}); 

    </script>

$(文档).ready(函数(){
$(“.submitform”)。单击(函数(){
警报($(this.parent().serialize());
$.ajax({
类型:“POST”,
url:“reply_business.php”,
超时:5000,
数据:$(this).parent().serialize(),
发送前:函数(xhr){
$('#load').show();
},
成功:功能(响应){
$(this.parent().find('.sentreply').append(response);
$('sentreply div:last')。淡出(10)。淡出(2000);
//出于调试目的取消注释
//警报(响应);
},
错误:函数(jqXHR){
警报('From error:'+jqXHR.status+'+jqXHR.statusText);
},
完成:函数(jqXHR,textStatus){
//出于调试目的取消注释
//警报('From complete:'+jqXHR.status+''+jqXHR.statusText+''+textStatus);
$('#load').hide();
}
});
});
}); 
我正在用PHP代码创建下面的表单

foreach ($array['business_ids'] as $business) 
                  {              

                        ?>
<form >
  <input type="hidden" name="b_id" value="<?php echo $business ; ?>" />
  <input type="hidden" name="c_id" value="<?php echo $sqlr['conversation_id']; ?>" />
  <input type="hidden" name="q_id" value="<?php echo $sqlr['query_id']; ?>" />
  <input type="hidden" name="u_id" value="<?php echo $sqlr['u_id']; ?>" />
  &nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;
  <textarea  name="reply">Type the reply here.</textarea>
  <input type="submit"  class="submitform" value="Submit">
</form>
<?php


                  }
foreach($business['business\u id']作为$business)
{              
?>

在没有看到标记或网络流量的情况下,我们只能猜测。也许$(this).parent()不是表单

附加
$(表单).submit()
通常比
$(按钮)更安全。出于这个原因和
$(按钮)的原因,单击()
。单击()
不会通过按enter键捕获表单提交

编辑以下是一个示例:

<form id="theform">
    <input type="text" id="thetext" name="thetext" />
    <input type="submit" value="send" />
</form>
<form id="anotherform">
    <input type="text" id="anothertext" name="anothertext" />
    <input type="submit" value="save 2" />
</form>
<script>
    $(document).ready(function () {
        $("#theform").submit(function (e) {
            var data = {
                thetext: $("#thetext").val()
            };
            $.ajax("/the/server/url", {
                type: "POST",
                contentType: "application/json; charset=utf-8",
                data: JSON.stringify(data),
                success: function (r) {
                    alert("done");
                }
            });
            // Technically you need only one or the other
            e.preventDefault();
            return false;
        });
    });
</script>

$(文档).ready(函数(){
$(“#表格”)。提交(功能(e){
风险值数据={
课文:$(“#课文”).val()
};
$.ajax(“/the/server/url”{
类型:“POST”,
contentType:“应用程序/json;字符集=utf-8”,
数据:JSON.stringify(数据),
成功:功能(r){
警惕(“完成”);
}
});
//从技术上讲,你只需要一个或另一个
e、 预防默认值();
返回false;
});
});

您似乎在启动Ajax请求后提交了表单,当页面被卸载时,请求被取消。由于您的表单没有
操作
,因此提交只会重新加载当前页面,因此您可能不会注意到它


要防止这种情况,您需要
preventDefault()
捕获的事件。此外,您不应该只处理
单击提交按钮上的
事件,而应该处理
本身的
提交
-事件。

在您的网络调试器中请求看起来如何?服务器是否响应?类似的问题,这甚至可以解决您的问题:@Bergi-状态为已取消对于请求的页面?知道为什么吗?在那个php中,我刚刚看到标题,上面写着
你正在尝试做CORS请求吗?@doniyor:Hmm..但是在我的情况下,我也在同一个服务器上,在同一个目录中…可能有什么问题?@Robrich-但是因为我有10-12个表单…如果我做
$(表单)。submit()
所有表单元素都将被提交。有其他选择吗?
$(“#formid”).submit()
将只将提交附加到这一个表单。但是页面将正确重新加载。我希望使用ajax来避免页面重新加载。只要在函数末尾返回false(或
e.preventDefault()
),它不会执行默认行为--在本例中,提交表单。您可能已经在为按钮单击和链接单击执行此操作,以避免它们执行有趣的操作。请您给我举个例子,说明如何实现它?我只希望在10个表单中,有一个是我在数据库中单击的表单使用should重新加载页面。Ajax正在
$(document).ready(function(){
so..和`alert($(this).parent().serialize())上加载是否重新加载页面?@robrich:非常感谢:)我花了10个小时来解决这个问题。我接受你的答案。但是
e.preventDefault();return false;
是如何起作用的呢?很抱歉,我在添加示例时编辑了错误的帖子。这将让我学会在走出门后快速回答问题。