今天遇到一個問題,我須要傳一個文本庫的內容給後臺,而後用autocomplete顯示內容,開始以爲很簡單web
不就是json
function SalePrice_Complete(text) { //分割拿到索引 var value=$("#MaterielID_" + text.selector.split('_')[1]).val(); text.autocomplete("/Control/webControl.ashx", { dataType: 'json', //返回數據類型 width: 220, minChars: 0, extraParams: { Method: "SalePriceAutoComplate",MaterielID:value}, parse: function (data) { //後臺返回的數據傳給自定義的rows var rows = []; for (var i = 0; i < data.length; i++) { rows[rows.length] = { data: "[" + data[i].FPirce + " " + data[i].FDate + "]", //顯示在搜索界面的列表 value: data[i].FPirce , //查詢結果 result: data[i].FPirce //顯示在文本框的內容 }; } return rows; }, formatItem: function (row, i, n) { return row; } }).result(function (event, item, returnvalue) { var values = returnvalue; var index = text[0].id; var i = index.split('_')[1]; //物料編號 $("#price_" + i).val(values[0]); }); };
可是代碼運行後發現,MaterielID獲得是空的,想了好久不知道爲何,因而在後臺和js都下了斷點,再運行,發現js沒有再運行過了,可是後臺卻斷點斷到了spa
因此咱們能夠推斷,變量是要動態賦值的調試
因而參考了下網上的代碼,修改爲code
function SalePrice_Complete(text) { text.autocomplete("/Control/webControl.ashx", { dataType: 'json', //返回數據類型 width: 220, minChars: 0, extraParams: { Method: "SalePriceAutoComplate",MaterielID:function(){ return $("#MaterielID_" + text.selector.split('_')[1]).val()}}, parse: function (data) { //後臺返回的數據傳給自定義的rows var rows = []; for (var i = 0; i < data.length; i++) { rows[rows.length] = { data: "[" + data[i].FPirce + " " + data[i].FDate + "]", //顯示在搜索界面的列表 value: data[i].FPirce , //查詢結果 result: data[i].FPirce //顯示在文本框的內容 }; } return rows; }, formatItem: function (row, i, n) { return row; } }).result(function (event, item, returnvalue) { var values = returnvalue; var index = text[0].id; var i = index.split('_')[1]; //物料編號 $("#price_" + i).val(values[0]); }); };
這樣後臺拿到MaterielID就有值了,事實證實,在對代碼機制不熟悉的狀況下,用正常思惟去推只能讓你陷入煩惱和睦憤中,想着明明有賦值,怎麼到後臺就不見了,因此仍是多用斷點多調試,用事實說話orm