AJAX请求太大了?

时间:2015-07-13 01:48:43

标签: javascript php jquery ajax

我制作了一个包含很多字段的表单,我计划通过AJAX异步提交所有数据。但是,当我单击“提交”按钮时,它仍处于单击状态,并且页面冻结。 beforeSend function也不会执行。注意_()函数是我听说过jQuery document.getElementById函数的.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 个答案:

答案 0 :(得分:2)

按您的问题顺序:

  1. 是和否。这取决于你的意思是“太大”,如果你的意思是太大的互联网无法处理,那么没有。如果你对应用程序的结构意味着太大,那么也许吧。我看到你正在使用php后端,你可以看看php.ini中的post_max_size值并设置它:
  2. #set max post size php_value post_max_size 40M

    1. 根据您的页面冻结,这可能是一系列问题,您应该为您的应用程序添加一些错误处理并调试它以查看您的应用程序何时冻结然后查看所述代码,或者您是否可以抓住更好的错误。

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

    3. 中不推荐使用.success()
    4. .done()将与.success()类似地运行,如果您将AJAX调用拆分为两个调用,一个使用回调函数运行另一个调用,则插入您的行中的行数数据库将取决于你发布的方法是什么样的。如果您每次调用INSERT行,则是,使用两次调用将INSERT两行。