идентификатор, строка или целое число ожидались с помощью eval()

#javascript

#javascript

Вопрос:

Я получаю странную ошибку в IE .. но никаких проблем как в FF, так и в chrome

когда я предупреждаю переменную, я получаю это:

 json_post('delete_accounting', 'json.action.php?action=delete_accounting', 'id=682', 'rtn_accounting', {tr_id:'tr_acc682', enc_id:374, delete:1});
  

но когда я хочу eval() the sting, я получаю эту ошибку (ошибка переведена с датского, поэтому я не знаю, как это переводится на английский?)

 id, string or integer was expected
  

Редактировать:

 var xmlhttp = {};
function json_post(request_var, response, get_str, callback_function, callback_var)
{
    request_var  = Math.floor(Math.random()*999).toString();

    CNSTR.mouseLoader.cnstr();

    if(window.XMLHttpRequest) xmlhttp[request_var] = new XMLHttpRequest();
    else if(window.ActiveXObject) xmlhttp[request_var] = new ActiveXObject('Microsoft.XMLHTTP');

    xmlhttp[request_var].open('POST', response, true);
    xmlhttp[request_var].setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlhttp[request_var].onreadystatechange = function()
    {
        if(xmlhttp[request_var].readyState == 4)
        {
            CNSTR.mouseLoader.dstr();

            if(callback_function) eval(callback_function '(' xmlhttp[request_var].responseText (callback_var ? ', callback_var':'') ')');
        }
    }
    xmlhttp[request_var].send(get_str);
}
  

Я совершенно уверен, что ошибка возникает в eval (), потому что, когда я запускаю sting как реальный код, проблем не возникает..

вот так:

 json_post('delete_accounting', 'json.action.php?action=delete_accounting', 'id=682', 'rtn_accounting', {tr_id:'tr_acc682', enc_id:374, delete:1});
  

Я также пытался избежать всего в функции обратного вызова rtn_accounting(), и все та же ошибка в той же строке с eval ()

Комментарии:

1. Можете ли вы показать точный код, который вы используете? Что json_post делает?

2. В качестве альтернативы, используйте оповещения (или инструмент отладки …), чтобы проверить, что json_post запущен.

3. вопрос отредактирован.. Я не знаю, как проверить, запущен ли json_post в IE … единственный инструмент, о котором я знаю, это firebug в FF, но моя проблема не в этом

4. Теперь я поместил предупреждение в начало функции json_post (), но ничего не было предупреждено.. так что я не думаю, что ошибка в этой функции

5. есть ли какая-либо причина для использования eval ? Вы могли бы вызвать функцию, заданную callback_function напрямую!

Ответ №1:

добавление кавычек в объект в последнем параметре работает

 json_post('delete_accounting', 'json.action.php?action=delete_accounting', 'id=682', 'rtn_accounting', {'tr_id':'tr_acc682', 'enc_id':374, 'delete':1});
  

Комментарии:

1. delete это ключевое слово. Поведение соответствует ECMA3. В ECMA5 это исправлено.

2. ах .. ок .. тогда это придает больше смысла