javascript - AJAX 请求太大?

标签 javascript php jquery ajax

我正在制作一个包含很多字段的表单,我计划通过 AJAX 异步提交所有数据。但是,当我单击“提交”按钮时,它仍处于单击状态并且页面卡住。 beforeSend 函数 也不执行。请注意 _() 函数是 document.getElementById 我听说过 jQuery .done() 函数,但这对性能有帮助吗页面的所有数据都作为一行放入数据库中,所以如果我拆分数据有一个 .done() 函数来发送另一半,它会作为两行存储在数据库中吗?

function addproperty(){
        var propertyname = _("propertyname").value;
        var propertyaddr = _("propertyaddress").value;
        var price = _("price").value;
        var rent = _("rent").value;
        var available = _("available").value;
        var brokerage = _("brokerage").value;
        var area = _("area").value;
        var subarea = _("subarea").value;
        var sqft = _("sqft").value;
        var description = _("description").value;
        var location = _("location").value;
        var floortype = _("flooringtype").value;
        var parking = _("parking").value;
        var deposit = _("deposits").value;
        var lease = _("lease").value;
        var utils = _("utils").value;
        var bedrm = _("bedrooms").value;
        var bathrm = _("bathrooms").value;
        var smoke = _("smoking").value;
        var pets = _("pets").value;
        var built = _("built").value;
        var submit = _("propertysubmit");
        $.ajax({
            url: "addlisting.php",
            type: "POST",
            async: true,
            data:{
                propertyname:propertyname,
                propertyaddr:propertyaddr,
                price:price,
                rent:rent,
                available:available,
                brokerage:brokerage,
                area: area,
                subarea: subarea,
                sqft: sqft,
                desc: description,
                locate:location,
                floortype: floortype,
                park: parking,
                deposit: deposit,
                lease: lease,
                utils: utils,
                bedrm: bedrm,
                bathrm: bathrm,
                builtdate: built,
                smoke: smoke,
                pets: pets
            },
            beforeSend: function (){
                submit.setAttribute("disabled", "disabled");
                submit.innerHTML = "Submitting...";
            },
            success: function (){
                submit.removeAttribute("disabled");
                submit.innerHTML="Add New Listing";
            } 
        });
    }

最佳答案

按照你的问题顺序:

  1. 是和不是。这取决于你所说的“太大”是什么意思,如果你的意思是互联网无法处理,那就不行。如果您对应用程序的结构意味着太大,那么也许。如我所见,您使用的是 php 后端,您可以查看 php.ini 中的 post_max_size 值并进行设置:

#set 最大帖子大小 php_value post_max_size 40M

  1. 根据您的页面卡住,这可能是一大堆问题,您应该向您的应用程序添加一些错误处理并调试它以查看您的应用程序在什么时候卡住,然后查看所述代码,或者如果您可以更好地捕捉抛出的错误。

  2. .done().success() 都是回调函数,它们是功能重复的,因为它们在功能上是相同的。需要注意的是 .success() 在 JQuery 1.8+ 中已弃用

  3. .done() 将以类似于 .success() 的方式运行,如果您将 AJAX 调用分成两个调用,一个在另一个之后运行,使用一个回调函数,那么插入到数据库中的行数将取决于您发布到的方法是什么样的。如果您每次调用 INSERT 一行,那么是的,使用两次调用将 INSERT 两行。

关于javascript - AJAX 请求太大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31374396/

相关文章:

javascript - CSS 菜单格式问题

javascript - 拉伸(stretch)和可滚动的内部 div

javascript - HTML 输入范围的重新映射值

javascript - 如何获取draggable中droppable的id?

javascript - 访问与导入类型同名的 ES6 类型

php - 使用 PHP 添加到 MySQL 会添加两次并出现外部 ID 约束问题

javascript - 仅在一个菜单中禁用数据自动关闭下拉基础

php - 使用 Zend Framework 和 PHP 发送电子邮件

php - 如何使用 usort 在 php 中执行自然排序

jquery - 为什么我的jquery延迟处理错误和jsonp数据不起作用?