0

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 ページで同じコードが機能します。

何か足りない?

ご回答ありがとうございます。

4

2 に答える 2

0

最後に、空の serialize の解決策 (および理由) を見つけます。

フォームは<table><tr><td>... にあり、<form>要素は の子として許可されていません<table>

ブラウザは、テーブルの外に移動し、</form>start の直後に閉じることでエラーを修正していました。これは、要素がテーブル内にないことを意味します。シリアル化されたデータは空です。

私のソースコード:

<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 に読み込まれていない場合でも同じコードが機能します。常に機能することを確認するために、テーブルの外にフォームを配置するだけで、投稿にデータが含まれるようになりました。

助けてくれて本当にありがとうございます。

于 2013-05-22T13:06:03.720 に答える