У меня проблема с передачей массива функции в JavaScript.Uncaught TypeError: Object не имеет метода 'splice'
У меня есть комната со стенами, которая должна быть сохранена, но есть слишком много элементов, поэтому я разделяю их по частям. Когда у нажмите на «Сохранить» это первая функция, которая называется:
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
, это сработало отлично.Я не знаю, почему я этого не пытался. myabe, чтобы долго стоять перед кодом. Большое спасибо. будет принимать этот ответ, как только смогу. имеют тайм-аут 7 мин. – Przemek