JavaScriptの関数に配列を渡す際に問題があります。Uncaught TypeError:オブジェクトに '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の文字列を作成します:uが、これはと呼ばれる最初の機能である「保存」をクリックすると、 。既に使用されるパラメータを削除して、次の関数を呼び出します。
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関数が呼び出されます。これにより、保存される部分的なパラメータリストが構築されます。アレイからオブジェクトを除去し、このメソッドは、値を保存するJavaコントローラ呼び出し、すべてのパラメータが処理されるまで、それは、再びprepareSaveRoom関数を呼び出す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");
}
});
}
保存呼び出します。しかし、ときsaveRoom()はprepareSaveRoomを呼び出し、それがポイントになります:
for(var i=1; i<=length/loops; i++)
{
temp_paramlist += "&"+params[0];
params.splice(0,1);
}
私はオブジェクトがメソッド「スプライス」を持っていないエラーが発生します。 私はバグを見つけることができないので、私はここでいくつかの助けを見つけることを試みています。 なぜ関数から関数に渡されるパラメータ配列でspliceを呼び出せないのかわかりません。読書や可能助けを
感謝:)
しません、私はこれをしようとすると、それがうまくいけば、フィードバックを与えてください – Przemek
これは完全に働いた。なぜ私はこれを試していないのかわかりません。コードの前で長い間、マイアベ。どうもありがとうございました。できるだけ早くこの回答を受け入れます。 7分のタイムアウトがあります。 – Przemek