我有一個jQuery的HTML表單,用於捕獲表單提交,但由於某種原因,瀏覽器將Ajax調用發送給後端兩次。沒有javascript錯誤,一切都按預期工作,包括後端返回預期的json。表單提交時發出多個ajax調用
我發現有同樣問題的其他職位,但沒有任何迴應幫助過我。我在下面列出了我的代碼。有沒有人有任何建議,爲什麼這可能會發生?
HTML:
<form action="/rating/create/<?php echo $jobId ?>" method="post" id="rating-form">
<input type="hidden" id="Rating_jobId" name="Rating[jobId]" value="<?php echo $jobId ?>" />
<input id="Rating_quality" type="slider" name="Rating[quality]" value="0" />
<input id="Rating_service" type="slider" name="Rating[service]" value="0" />
<input type="submit" name="submit" value="Submit">
</form>
的JavaScript/jQuery的:
$('#rating-form').live('submit', function() {
var action = $(this).attr('action');
var dataset = {'Rating':{
'jobId':$('#Rating_jobId').val(),
'quality':$('#Rating_quality').val(),
'service':$('#Rating_service').val(),
},'ajax':'true'}
d = new Date;
dateCache = d.getTime();
$.ajax({
type: "POST",
url: action +"?"+ dateCache,
data: dataset,
datatype: "application/json",
cache: false
}).done(function(response) {
if(response.success == 'true'){
$('a.rating-'+ response.jobId).parent().remove();
$.fancybox.close()
} else {
alert(response.error);
}
});
return false;
});
僅供參考:您可以使用'dateCache'跳過整個事件,因爲'POST'請求根本沒有被緩存。另外jQuery也會爲''cache:false'做同樣的事情 – Andreas
你使用的是螢火蟲嗎?你看到有兩個要求正在制定嗎?如果不是,那麼問題可能在後端 –