2012-05-16 6 views
4

Short

ПолучениеСтранная Jquery сообщение об ошибке

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

Вот часть кода из JQ

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

Подробное

я заранее объявил массив aoData. Этот массив создан Datatables, и у меня нет структуры contorl over array.

Когда я вручную толкать Params один за одним, как это:

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

это работает хорошо, без каких-либо сообщение об ошибке.

Но проблема в том, что когда я пытаюсь объявить массив tableXtraPostParams в верхней части скрипта и толкаю один за другим параметры этого массива в 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 (Dev издание) и заменен уменьшенная 1.7.2. Нет успеха!
  2. Я попытался написать

.

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

вместо $ .each. Нет успеха!

Что мне здесь не хватает? Я действительно не знаю, почему это сообщение об ошибке появляется в журнале Firefox, когда я пытаюсь вытолкнуть изнутри $ .each и код по-прежнему отлично работает.

Любые предложения будут очень благодарны!

Примечание

Вот один по одной версии (без $ .each): datatables.net/examples/server_side/custom_vars.html

+0

Я сделал простой JSFiddle, http://jsfiddle.net/brantolsen/GkWzN/, используя ваш код, и все, казалось, сработало. Не могли бы вы попытаться воспроизвести ошибку в JSFiddle? Обратите внимание, что я пробовал как Chrome, так и Firefox. –

+0

@BrantOlsen проблема в том, что аодата уже объявлена, и я не контролирую ее структуру. Беспокойство, но я не контролирую его структуру. Вот рабочий пример. http://datatables.net/release-datatables/examples/server_side/pipeline.html Я пытаюсь вставить другие параметры в этот массив на основе этого http://datatables.net/examples/server_side/custom_vars.html – heron

+0

Почему вы получаете ошибку jQuery, когда вы не используете jQuery в коде, опубликованном под заголовком _tried для solve_? Вы уверены, что ищете подходящее место? Можете ли вы опубликовать трассировку стека? –

ответ

1

Я ожидаю, что вы ищете в неправильном месте для этой ошибки. Если объект и массив, которые вы повторяете и дополняете, НЕ являются экземплярами jQuery, и вы можете воспроизвести его, не используя $ .each, я думаю, вы должны посмотреть, что вы делаете с aoData позже.

Шипения является двигателем селектора, поэтому обратите внимание на место, где вы делаете что-то вроде этого:

$(aoData[0]) 

В этом гипотетическом случае, вы делаете JQuery думает, что это имеет селектор, но вы передали ему что-то остальное.

Надеюсь, что это поможет!

+0

Thx для попытки помочь. См. Мой комментарий по вопросу – heron