我在將數組傳遞給JavaScript函數時遇到問題。未捕獲TypeError:對象沒有方法「拼接」
我有一個房間的牆壁必須保存,但有太多元素,所以我把它們分成幾部分。當U點擊「保存」這是一個被稱爲第一功能:
function getCompleteParamlist(id)
{
var paramlist = $("#edit_form_"+id).serialize();
var params = paramlist.split("&");
var id = params[0];
var name = params[1];
var x_max = params[2];
var y_max = params[3];
var tools = params[4];
var style_toolbrush = params[5];
var roompiece_brushchooser = params[6];
params.splice(0,7);
var y = y_max.replace(/\D/g, '');
var length = params.length;
var fixed_params = id+"&"+name+"&"+x_max+"&"+y_max+"&"+tools+"&"+style_toolbrush+"&"+roompiece_brushchooser+"&y_val=";
prepareSaveRoom(fixed_params,params,y,length,1);
}
它讓所有將要保存的值,他們分成數組,並建立PARAMS的字符串每次使用。刪除了已經使用的參數,並調用一個函數:
function prepareSaveRoom(fixed_params,params,loops,length,count)
{
var temp_paramlist = fixed_params+count;
for(var i=1; i<=length/loops; i++)
{
temp_paramlist += "&"+params[0];
params.splice(0,1);
}
if (count == loops)
{
temp_paramlist += "&last=true";
saveRoom(temp_paramlist,1,fixed_params,params,loops,length,count);
}
else
{
temp_paramlist += "&last=false";
count++;
saveRoom(temp_paramlist,0,fixed_params,params,loops,length,count);
}
}
這個工程在第一次運行和新的臨時PARAMETERLIST是建立和saveRoom函數被調用。這會建立一個將要保存的部分參數列表。除去從陣列中的對象,並調用保存funvtion
function saveRoom(temp_paramlist,lastloop,fixed_params,params,loops,length,count)
{
alert(temp_paramlist);
$.ajax({
type: "POST",
dataType: "html",
url: "SaveRoom?"+temp_paramlist,
contentType: "application/x-www-form-urlencoded;charset=UTF-8",
cache: false,
success: function(data){
if(lastloop == 1){
location.href=data;
}
else{
window.setTimeout("prepareSaveRoom('"+fixed_params+"','"+params+"','"+loops+"','"+length+"','"+count+"')",2000);
}
},
error: function(data){
showErrorDialogHandleSecondDiv(data.responseText,"#edit_room");
}
});
}
此方法調用一個Java控制器節省了值,然後它再次調用prepareSaveRoom功能,直到所有的參數的處理方式。但是,當saveRoom()調用prepareSaveRoom連帶的一點是:
for(var i=1; i<=length/loops; i++)
{
temp_paramlist += "&"+params[0];
params.splice(0,1);
}
我得到的對象沒有方法「拼接」的錯誤。 我找不到這個錯誤,所以我想在這裏找到一些幫助。 我不知道爲什麼我無法調用從函數傳遞給函數的參數數組上的拼接。
感謝您的閱讀和可能的幫助:)
我會嘗試這一點,然後給予反饋,如果它的工作 – Przemek 2012-02-15 13:44:11
這工作完美。我不知道爲什麼我沒有嘗試這個。 myabe在代碼前面長。非常感謝你。我會盡快接受這個答案。有7分鐘超時。 – Przemek 2012-02-15 13:46:52