使用jQuery在AJAX中加载此表单时,在jQuery中发布表单

时间:2013-05-21 21:17:22

标签: jquery ajax post

我想使用jQuery.post发布表单:

JS功能:

function post_ajax_form2(url,formId,message){   
  bsendMessage = 0; 
  if (typeof message !== 'undefined') { bsendMessage =  1;} 
  var data = jQuery('#'+formId).serialize();    
  alert(data);
  jQuery.post(url,data);    
  if (bsendMessage == 1) { alert(message); }
} 

使用单个jQuery.load在AJAX中加载表单。

加载HTML表单:

<form action="index.cfm" method="get" id="fdesc_preview">
   <input type="hidden" name="change_preview" value="1">
   <input type="checkbox" id="cbpreview" name="PREVIEW" class="preview" value="1" onclick="post_ajax_form2('myUrl.html','fdesc_preview');" <cfif attributes.preview> checked</cfif>></td>
   <td>Show short descriptions&nbsp;</td>
</form>

当我点击复选框时,表单已发布,但数据为空。 单个HTML页面上的相同代码可用。

我错过了什么?

感谢您的回复。

2 个答案:

答案 0 :(得分:0)

使用这种形式的帖子:

jQuery.post(url,data);    
if (bsendMessage == 1) { alert(message); }

IF条件语句立即执行,不等待帖子返回 - 帖子是异步的,需要在帖子的回调函数中有条件。

变更示例:

jQuery.post(url,data).done(function(message) {
    alert(message); }
});

答案 1 :(得分:0)

我终于找到了空序列化的解决方案(和原因):

表单位于<table><tr><td> ...中,<form>元素不允许作为<table>的子元素。

浏览器正在通过将错误移到表外并在启动后关闭</form>来纠正错误,这意味着元素不再在其中:序列化数据然后为空!

我的源代码:

<table cellspacing="0" cellpadding="4" border="0" align="left">
  <tr>
    <form action="index.cfm" method="post" id="fdesc_exp_view" name="fdesc_exp_view">
      <td width="16">
        ......
        <input type="checkbox" id="cbexpanded_view" name="expanded_view" class="expanded_view" value="1" onchange="post_ajax_form('myUrl','fdesc_exp_view','thanks 2');"<cfif attributes.expanded_view> checked</cfif>>
      </td>
       <td>Show expanded view&nbsp;</td>
     </form>
   </tr>

浏览器输出源代码:

<table cellspacing="0" cellpadding="4" border="0" align="left">
<tbody>
  <tr valign="middle">
    <form id="fdesc_exp_view" name="fdesc_exp_view" method="post" action="index.cfm"></form>  
    <td width="16">
      .......
      <input id="cbexpanded_view" class="expanded_view" type="checkbox" onchange="post_ajax_form('myUrl','fdesc_exp_view','thanks 2');" value="1" name="expanded_view">
    </td>
    <td>Show expanded view </td>
</tr>
</tbody>
</table>

如果页面未在AJAX中加载,相同的代码也能正常工作,以确保它始终有效我只需将表单放在表格之外,现在我的帖子中就有数据。

非常感谢你的帮助。