0

私は ajax 経由で投稿データを送信しています。そのデータは次のようになります。

var cardProperties = {
    container: $("#cardContainer"),
    elementsWrapper: $("#cardElementsWrapperBorder"),
    size: 0, //0 -> (90x50mm <-> 510px x 283px), 1-> (85x55mm <-> 482px x 312px)
    position: "h", //default horizontal
    bgImagesPath: "media/images/designs/backgrounds/", //path to card bg images
    floatingImagesPath: "media/images/designs/floating-images/", //path to card bg images
    imagesPerPage: 8,
    innerBorderMargins: 40, //this should be divided by 2 to get the actual margin
    currentCardSide: 1
};

したがって、基本的にはいくつかの通常のデータがありますが、containerまたはのようなフィールドにelementWrapperは、おそらくそのオブジェクトと子オブジェクトに関する多くの情報が含まれているため、非常に醜いエラーが発生Uncaught RangeError: Maximum call stack size exceededし、これらの2つのフィールドは必要ないため、どのように除外できますか後でjsスクリプトで必要になるため、その情報を削除せずにオブジェクトから削除します。

編集

また、ここに私のajaxコードがあります:

$.post("server.php", {data: cardProperties},
   function(response){

   }
);
4

1 に答える 1

1

関数とオブジェクトを削除すると、これらの文字列と数値だけが得られます。

var propertiesForAjax = (function(obj){
        var out = {};
        for(var i in obj){
           if(typeof obj[i]==='object' || typeof obj[i]==='function') continue;
           out[i] = obj[i];
        }
    })(cardProperties);

または自己実行機能なし:

function transformProps(obj){
   var out = {};
   for(var i in obj){
       if(typeof obj[i]==='function' || typeof obj[i]==='object') continue;
       out[i] = obj[i];
   }
}

var toPost = transformProps(cardProperties);

ノート:

  • オブジェクトを変換している場合は、少し異なることを試す必要があります (たとえば、有効なオブジェクトのリストを確認してください)。
  • 何を変換しているのかわからない場合は、おそらくこれを使用しないでください。予期しない出力が発生したり、何かを失ったりする可能性があるためです。
于 2012-07-10T21:45:04.543 に答える