4

短い

取得

Syntax error, unrecognized expression: [object Object] @ jquery.js:4267

ここにjQのコードがあります

Sizzle.error = function( msg ) {
throw new Error( "Syntax error, unrecognized expression: " + msg ); // Line 4267
}; 

詳細

array を事前に宣言しaoDataました。この配列は Datatables によって作成され、配列構造を制御することはできません。

次のようにパラメーターを 1 つずつ手動でプッシュすると、次のようになります。

aoData.push( { "name": "process", "value": "fetch" } );

エラーメッセージなしでうまく機能します。

しかし、問題は、tableXtraPostParamsスクリプトの先頭で配列を宣言し、この配列のパラメーターを 1 つずつ にプッシュしようとするとaoData、正常に動作しますが、コードではなく jQuery から奇妙なエラー メッセージが表示されることです。

Syntax error, unrecognized expression: [object Object] @ jquery.js:4267

ここにコードがあります:($.eachループを削除すると、エラーメッセージが消えます)

var tableXtraPostParams = {
    "process":"fetch",
    "which":"mine"
};
$.each(tableXtraPostParams, function(n, v){
    aoData.push( {
       "name": n, 
       "value": v
    } );
});

aoDataプッシュ前は次のようになります

[Object { name="sEcho", value=1}, Object { name="iColumns", value=8}, Object { name="sColumns", value=""}, Object { name="iDisplayStart", value=0}, Object { name="iDisplayLength", value=25}, Object { name="mDataProp_0", value=0}, Object { name="mDataProp_1", value=1}, Object { name="mDataProp_2", value=2}, Object { name="mDataProp_3", value=3}, Object { name="mDataProp_4", value=4}, Object { name="mDataProp_5", value=5}, Object { name="mDataProp_6", value=6}, Object { name="mDataProp_7", value=7}, Object { name="sSearch", value=""}, Object { name="bRegex", value=false}, Object { name="sSearch_0", value=""}, Object { name="bRegex_0", value=false}, Object { name="bSearchable_0", value=true}, Object { name="sSearch_1", value=""}, Object { name="bRegex_1", value=false}, Object { name="bSearchable_1", value=true}, Object { name="sSearch_2", value=""}, Object { name="bRegex_2", value=false}, Object { name="bSearchable_2", value=true}, Object { name="sSearch_3", value=""}, Object { name="bRegex_3", value=false}, Object { name="bSearchable_3", value=true}, Object { name="sSearch_4", value=""}, Object { name="bRegex_4", value=false}, Object { name="bSearchable_4", value=true}, Object { name="sSearch_5", value=""}, Object { name="bRegex_5", value=false}, Object { name="bSearchable_5", value=true}, Object { name="sSearch_6", value=""}, Object { name="bRegex_6", value=false}, Object { name="bSearchable_6", value=true}, Object { name="sSearch_7", value=""}, Object { name="bRegex_7", value=false}, Object { name="bSearchable_7", value=true}, Object { name="iSortingCols", value=1}, Object { name="iSortCol_0", value=0}, Object { name="sSortDir_0", value="asc"}, Object { name="bSortable_0", value=true}, Object { name="bSortable_1", value=true}, Object { name="bSortable_2", value=true}, Object { name="bSortable_3", value=true}, Object { name="bSortable_4", value=true}, Object { name="bSortable_5", value=true}, Object { name="bSortable_6", value=true}, Object { name="bSortable_7", value=true}]

そして、これがプッシュ後です

[Object { name="sEcho", value=1}, Object { name="iColumns", value=8}, Object { name="sColumns", value=""}, Object { name="iDisplayStart", value=0}, Object { name="iDisplayLength", value=25}, Object { name="mDataProp_0", value=0}, Object { name="mDataProp_1", value=1}, Object { name="mDataProp_2", value=2}, Object { name="mDataProp_3", value=3}, Object { name="mDataProp_4", value=4}, Object { name="mDataProp_5", value=5}, Object { name="mDataProp_6", value=6}, Object { name="mDataProp_7", value=7}, Object { name="sSearch", value=""}, Object { name="bRegex", value=false}, Object { name="sSearch_0", value=""}, Object { name="bRegex_0", value=false}, Object { name="bSearchable_0", value=true}, Object { name="sSearch_1", value=""}, Object { name="bRegex_1", value=false}, Object { name="bSearchable_1", value=true}, Object { name="sSearch_2", value=""}, Object { name="bRegex_2", value=false}, Object { name="bSearchable_2", value=true}, Object { name="sSearch_3", value=""}, Object { name="bRegex_3", value=false}, Object { name="bSearchable_3", value=true}, Object { name="sSearch_4", value=""}, Object { name="bRegex_4", value=false}, Object { name="bSearchable_4", value=true}, Object { name="sSearch_5", value=""}, Object { name="bRegex_5", value=false}, Object { name="bSearchable_5", value=true}, Object { name="sSearch_6", value=""}, Object { name="bRegex_6", value=false}, Object { name="bSearchable_6", value=true}, Object { name="sSearch_7", value=""}, Object { name="bRegex_7", value=false}, Object { name="bSearchable_7", value=true}, Object { name="iSortingCols", value=1}, Object { name="iSortCol_0", value=0}, Object { name="sSortDir_0", value="asc"}, Object { name="bSortable_0", value=true}, Object { name="bSortable_1", value=true}, Object { name="bSortable_2", value=true}, Object { name="bSortable_3", value=true}, Object { name="bSortable_4", value=true}, Object { name="bSortable_5", value=true}, Object { name="bSortable_6", value=true}, Object { name="bSortable_7", value=true}, Object { name="process", value="fetch"}, Object { name="which", value="all"}]

解決しようとしたこと

  1. jQ 1.7.2 (開発版) をダウンロードし、縮小版の 1.7.2 に置き換えました。失敗!
  2. 書いてみた

.

for( var p in tableXtraPostParams ) {
    aoData.push( {
       "name": p,
       "value": tableXtraPostParams[p]
    } );
} 

$.each の代わりに。失敗!

ここで何が欠けていますか?$.each 内からプッシュしようとすると、このエラー メッセージが Firefox のログに表示される理由がわかりません。コードはまだ完全に機能します。

どんな提案でも大歓迎です!

ノート

ここに1つずつバージョンがあります($.eachなし):datatables.net/examples/server_side/custom_vars.html

4

1 に答える 1

1

そのエラーの間違った場所を探していると思います。反復して拡張しているオブジェクトと配列が jQuery インスタンスではなく、$.each を使用せずに再現できる場合は、後で aoData を使用して行うことを検討する必要があると思います。

Sizzle はセレクター エンジンなので、次のようなことを行う場所を探します。

$(aoData[0])

この架空のケースでは、セレクターがあると jQuery に認識させていますが、別のものを渡しています。

それが役立つことを願っています!

于 2012-05-16T16:33:48.363 に答える