2015-07-13 139 views
1

我正在制作一个有很多字段的表单,我计划通过AJAX异步提交所有数据。但是,当我点击提交按钮时,它仍然处于点击状态,页面冻结。 beforeSend function也不执行。注意_()函数是document.getElementById我听说过关于jQuery .done()函数,但是这会帮助将页面的性能和所有数据都作为一行放入数据库中,所以如果我拆分数据的话有一个.done()函数发送另一半,将它作为两行存储在数据库中?AJAX请求太大?

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"; 
      } 
     }); 
    } 
+3

你没有什么错误处理 - 你不需要知道什么jQueery $就属性设置错误处理 - jqueery具有可在jqueery.com –

+0

半体面的API文档的页面冻结,由于您的'异步:TRUE'。你的要求不那么长。 – roullie

回答

2

在你的问题的顺序:

  1. 是,也不是。这取决于你的意思是“太大”,如果你的意思太大,互联网无法处理,那么不会。如果你的意思对你的应用程序的结构来说太大了,那么也许吧。当我看到你使用的是PHP后台,你可以在php.ini在post_max_size值看看,并设置:

#set max post size php_value post_max_size 40M

  • 根据您的页面冻结,这可能是一系列问题,您应该为应用程序添加一些错误处理并对其进行调试,以查看应用程序冻结的时间点,然后查看所述代码,或者如果您能够捕获更糟糕的错误。

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

  • .done()同样会运行.success(),如果你分割你的AJAX调用到两个电话,其中一个后,另一个使用一个回调函数运行,则行插入量在你的数据库中将取决于你所发布的方法是什么样的。如果INSERT每个呼叫一行,那么是的,使用两个呼叫将INSERT两行。