我正在努力通过ajax提交表单。
这是代码,但我一直在寻找大约3个小时,不知道为什么它不提交的形式…
任何想法?
<script type="application/javascript">
function addForm() {
$.ajax({type:'POST', url: 'cart.php?ajax=1&a=add&domain=register', data:$('#add-form').serialize(), success: function(response) {
$('#add-form').find('.form_result').html(response);
}});
return false;
}
function transferForm() {
$.ajax({type:'POST', url: 'cart.php?ajax=1&a=add&domain=transfer', data:$('#transfer-form').serialize(), success: function(response) {
$('#transfer-form').find('.form_result').html(response);
}});
return false;
}
</script>
我的代码与smarty混合,但调用只是一个标准的调用:)
{foreach from=$availabilityresults key=num item=result}
{if $result.status eq "available"}
<form method="post" id="add-form" onsubmit="return addForm();">
{else}
<form method="post" id="transfer-form" onsubmit="return transferForm();">
{/if}
<table width="700" border="0" cellspacing="5" cellpadding="0">
<input type="hidden" name="domain" value="{$result.domain}" />
<tr style="border-bottom: #333 1px solid;">
<td rowspan="2">
{if $result.status eq "available"}
<img src="templates/dj/yes.jpg" />
{else}
<img src="templates/dj/no.jpg" />
{/if}
</td>
{if $result.status eq "available"}
<td style="color:#339933;" />
{$result.domain|replace:$domain:''}
</td>
{else}
<td style="color:#cc0000;" />
{$result.domain|replace:$domain:''}
</td>
{/if}
<td rowspan="2">{$result.domain}</td>
<td rowspan="2">
{if $result.status eq "unavailable"}
{else}
<select name="domainsregperiod[{$result.domain}]">
{foreach key=period item=regoption from=$result.regoptions}
<option value="{$period}">
{$period} {$LANG.orderyears} @ {$regoption.register}
</option>
{/foreach}
</select>
{/if}
</td>
<td rowspan="2">
{if $result.status eq "available"}
<input type="image" src="templates/dj/add-basket.jpg" border="0" alt="Add to Basket" />
<div class="form_result"> Added to Basket </div>
{else}
<input type="image" src="templates/dj/transfer.jpg" border="0" alt="Transfer to Us" />
{/if}
</td>
</tr>
<tr>
<td>
{if $result.status eq "available"}
Available
{else}
Taken
{/if}
</td>
</tr>
<tr><td colspan="8" style="height:1px; background-color:#999;"></td></tr>
</table>
</form>
{/foreach}
您可以查看http://goo.gl/XdD9w6查看我的页面的运行情况,购物车是:http://goo.gl/I1zsNx
试试这个:
function addForm() {
$.ajax({type:'POST', url: 'cart.php?ajax=1&a=add&domain=register',
data:{"myForm": $('#add-form').serialize()},
success: function(response) {
$('#add-form').find('.form_result').html(response);
}
});
return false;
}
您在foreach
循环中构建所有<form>
元素,并且为它们分配相同的元素id。所以我才问你怎么知道你的表格被提交了。您确定这是您输入数据的表单吗?你确定这不是另一个具有相同id的表单吗?你怎么知道的?如果jQuery选择器选择的内容与您期望的不同怎么办?
我能够从您的站点中选择项目并将它们添加到购物车中。在Firebug中监控。从ajax请求(cart.php)获得'ok 200'响应确实花了很长时间。如果你有任何其他信息,请告诉我。