初入前端,網上找的很多資料都不夠詳細,導致遇到很多問題,現記錄如下: 1.首先引入 <script src="~/Scripts/jquery-1.10.2.js"></script> <script src="~/Scripts/jquery.form.js"></script> 這個兩個 腳本庫 ...
初入前端,網上找的很多資料都不夠詳細,導致遇到很多問題,現記錄如下:
1.首先引入
<script src="~/Scripts/jquery-1.10.2.js"></script>
<script src="~/Scripts/jquery.form.js"></script>
這個兩個 腳本庫,src屬性為路徑,註意順序,form為jQuery的一個子庫,因此放在後面。
2.js衝突。
我是在mvc下開發,引入庫後運行提示ajaxSubmit函數找不到,ie會直接報異常,百度瀏覽器不會報異常,需要進入瀏覽器調試模式下發現。
百度了很久,多數都是說沒有引入form庫,也有少數的人說是由於js庫衝突所致,子頁面中引入的js庫與母版頁或佈局頁引入的js庫衝突,沒有找到明確的解決辦法,
遂到佈局頁查看引入了哪些js庫,查看到佈局頁中使用
@Scripts.Render("~/bundles/modernizr")
讀取js文件,又查找相關資料發現,如果要在子頁面引入其它js文件,應該使用下麵方式,
@section scripts
{
<script src="~/Scripts/jquery.form.js"></script>
}
放在@section scripts塊中。
3.刷新問題,這個問題是由於提交按鈕type設置為submit導致,本身submit會自動執行當前視圖的預設控制器方法,而又在按鈕的單擊事件中執行提交,從而進行刷新。
切記,使用ajaxSubmit等其它方式提交時,input標簽type一定設置為button,不然多此一舉。
4.ajaxSubmit沒有提交,沒有跳轉到相應的控制器方法。
最開始使用的js代碼:
function AddPicture_Click() {
var options = {
url: "/GraphicPublicize/Add", // 要調用的控制器方法
type: "post",
data: {
"typeName": $("#type_list").find("[class='type_list_selected']").text(),
}, // 傳遞的數據
beforeSubmit: ValidationBeforeSubmit, // 提交之前的回調函數
success: ResponseAfterSuccess, // 提交之後返回的回調函數
};
jQuery('#Form').submit(function () {
$("#Form").ajaxSubmit(options);
return false;
});
return;
}
此函數綁定到按鈕的單擊事件上。此方式無效,跟蹤js明明執行了,但是回調函數和後端代碼都沒有執行。
之後改為:
function AddPicture_Click() {
var options = {
url: "/GraphicPublicize/Add", // 要調用的控制器方法
type: "post",
data: {
"typeName": $("#type_list").find("[class='type_list_selected']").text(),
}, // 傳遞的數據
beforeSubmit: ValidationBeforeSubmit, // 提交之前的回調函數
success: ResponseAfterSuccess, // 提交之後返回的回調函數
};
// jQuery('#Form').submit(function () { // 屏蔽這幾行代碼
$("#Form").ajaxSubmit(options);
// return false;
//});
return;
}
遂執行提交成功,什麼原因我也不曉得。
5.傳遞數據問題,網上說照這樣是可以傳的,
var options = {
url: "/GraphicPublicize/Add", // 要調用的控制器方法
type: "post",
data: {
"typeName": $("#type_list").find("[class='type_list_selected']").text(),
}, // 傳遞的數據
beforeSubmit: ValidationBeforeSubmit, // 提交之前的回調函數
success: ResponseAfterSuccess, // 提交之後返回的回調函數
};
實測不行,還有說jquery.form.js文件源碼不全,建議重新下載,還是不行,不知原因,又發現request中的param集合中有我需要的數據就沒管了。
關於ajaxSubmit可另行參考http://www.cnblogs.com/Leo_wl/p/4393190.html#undefined。
質量不咋的,請指教。