#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. ах .. ок .. тогда это придает больше смысла