【问题标题】:Ajax form submission mistakeAjax表单提交错误
【发布时间】:2014-12-22 02:47:31
【问题描述】:

我只是在学习 jQuery 并处理 ajax 提交,但我的表单没有提交,它只是重定向到我的主页。

您在我的 AJAX 中看到错误了吗?

带有 url 和 id 的表单结构 - 在 Laravel 中使用刀片模板:

{{ Form::open(
    array(
      'url' => '',
      'class' =>'form-horizontal',
      'id' => 'invoiceForm',
      'method' => 'post'
    )
) }}

ajax 调用(注意:我使用的是 jQuery 验证插件)

$(document).ready(function(){
$('#invoiceForm').validate({
    rules:{
        title: {
            required: true,
            maxlength: 255,
        }
    },
    messages:{
        title: {
            required: 'Please enter a title.'
        }   
    },
    submitHandler: function(form) {
                    var title = $('#title').val();
                    var customerId = $('#customer').val();
                    var contractorId = $('#contractorId').val();
                    var taxRate = $('#taxRate').val();
                    var servicename = $('#taxRate').val();
                    var taxable = $('#taxable').val();
                    var qty = $('#qty').val();
                    var price = $('#price').val();
                    var subtotal = $('#subtotal').val();
                    var total = $('#gtotal').val();
                    var comments = $('#comments').val();


                        $.post(baseURL+'/contractors/invoice', 
                         {  
                                title: title,
                                customerId: customerId,
                                contractorId: contractorId,
                                taxRate: taxRate,
                                serviceName: serviceName,
                                taxable: taxable,
                                qty: qty,
                                price: price,
                                subtotal: subtotal,
                                total: total,
                                comments: comments
                            },
                            function(response){
                            if(response.status == 200) {
                                location.href=baseURL+'/contractors/dashboard';
                            }
                            else if(response.status == 400) {
                                $('#msgSection').empty().removeClass('alert-error alert-success').addClass('alert-error');

                                }
                            }, 'json');
                        return false;
                    }
                    });

验证有效,但我认为表单没有捕获 .post 操作。 Firebug 不显示任何错误,只是重定向到索引页面。

这是我的发布路线(提交到表单所在的同一页面):

Route::post('/contractors/invoice', 'ContractorController@postInvoice');

另外,可能需要注意的是,表单可以与 php 提交操作一起正常工作。

TIA

【问题讨论】:

    标签: jquery forms


    【解决方案1】:

    由于重定向有效,我们可能正确地假设 Ajax 调用是成功的(除非其他地方有重定向??)。

    查看 Firebug 中的 Network 选项卡,您应该能够看到 Ajax 请求期间发送的数据。

    我还建议从 Ajax 调用中查找响应正文,它可能会为您提供有关幕后发生的事情的更多信息。

    希望对你有帮助

    【讨论】:

    • 我应该更清楚一点:页面正在重定向到主页,但这不是 ajax 的结果...在表单的任何地方都找不到指向主页的链接或打电话。
    • 尝试删除 Ajax 调用以查看重定向是否仍然发生。如果是这样,则意味着您正在受到另一个脚本的干扰。抱歉,我只能给出模糊的指示,但我需要更多信息来全面诊断问题。你可能想尝试从 Laravel 社区获得帮助。请随时通知我您的进度;)
    • 谢谢,我会调查的。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 2015-10-24
    • 1970-01-01
    • 2018-12-24
    • 1970-01-01
    • 2017-02-03
    • 2016-08-25
    相关资源
    最近更新 更多