配列を含む次の配列オブジェクトがあります。
var webApps = [
['leave empty']
];
一部のコンテンツで ajax を実行していますが、最終的な ajax 結果の文字列は次のようになります。
ajaxResult = ',["Alex","Somewhere, NY, 11334"],["Zak","Cherryville, FL, 33921"]';
私の質問は、返された文字列を取得して webApps 配列に追加するにはどうすればよいですか?
配列を含む次の配列オブジェクトがあります。
var webApps = [
['leave empty']
];
一部のコンテンツで ajax を実行していますが、最終的な ajax 結果の文字列は次のようになります。
ajaxResult = ',["Alex","Somewhere, NY, 11334"],["Zak","Cherryville, FL, 33921"]';
私の質問は、返された文字列を取得して webApps 配列に追加するにはどうすればよいですか?
@Bergi が指摘したように、ajax呼び出しを有効にすることはおそらく良い考えですJSON。それが制御できるものではない場合は、それを有効JSONにして解析しconcat、webApps配列に変換する必要があります。
var webApps = [
['leave empty']
];
var ajaxResult = ',["Alex","Somewhere, NY, 11334"],["Zak","Cherryville, FL, 33921"]';
//strip the comma
ajaxResult = ajaxResult.substring(1);
//surround with []
ajaxResult = "[" + ajaxResult + "]";
//parse
ajaxResult = JSON.parse(ajaxResult);
//and concat
webApps = webApps.concat(ajaxResult);
以下は、ブラウザーが JSON をサポートしている場合に機能します。
var webApps = [
['leave empty'],['one']
];
var str = JSON.stringify(webApps);
// "[["leave empty"],["one"]]"
str = str.substr(0, str.length-1);
//"[["leave empty"],["one"]"
//var arr = eval(str + ajaxResult + "]");
// more secure way
var arr = JSON.parse(str + ajaxResult + "]");
最初に、結果を解析可能なものに変換します (他の癖が必要ないことを願っています)。
var jsonStr = "["+ajaxResult.slice(1)+"]";
// [["Alex","Somewhere, NY, 11334"],["Zak","Cherryville, FL, 33921"]]
// would be better if it looked like that in the first place
これで、それを解析して、単一のアイテムを配列にプッシュできます。
var arr = JSON.parse(jsonStr);
webApps.push.apply(webApps, arr);
ajax の結果が文字列の場合、それをオブジェクトに変換し、各プロパティを webapps var に追加できます。
var data = eval('(' + ajaxResult + ')'); // data is a javascript array now, do anything you want