2014-10-07 3 views
0

Я хочу получить данные JSON, используя метод POST в Ajax. Я использовал ниже код для извлечения данных, но он дает ошибку, какМетод POST в ajax дает ошибку «Незаконный вызов»?

TypeError: Illegal invocation

http://mylocalhost.com/statics?action=retrive&table=log

На приведенной выше ссылке я получил данные в формате JSON. Здесь mylocalhost.com заменяется моим IP-адресом и номером порта.

var domain_url = "http://mylocalhost.com/statics"; 

var obj = { 
    action: 'retrive', 
    table: 'log', 
    dataType: 'json', 
    processData: false, 
    limit: 20, 
    option: {_id: {$lt :id}} 
}; 

console.log(obj) 

$.ajax({ 
    url: domain_url, 
    type: 'POST', 
    data: obj, 
    success: function(data, res){ 
     console.log(data) 
    }, 
    error: function (errorThrown, res) 
    { 
    } 
}); 
+1

Какая строка является ошибкой? – Barmar

+2

Я думаю, что это, вероятно, проблема с 'option: {_id: {$ lt: id}}'. Я не думаю, что вы можете передать вложенный объект как часть объекта данных. Каждое значение должно быть строкой. – Andy

+1

Что находится в переменной 'id'? Это твоя проблема. – epascarello

ответ

1

ошибка происходит, когда JQuery пытается взять объект, который пройдет в и преобразовать его в параметрах, чтобы перейти к серверу. Проблема связана с тем, что когда-либо было в вашем идентификаторе переменной. Когда это строка/номер, это нормально.

var id = 123; 
var opt = {option: {_id: {$lt : id}}}; 
var qs = $.param(opt); //fine 

Ошибка обычно возникает, когда кто-то пытается ссылаться на атрибут объекта, но в итоге просто устанавливает объект.

var id = document.getElementsByTagName("input")[0]; 
var opt = {option: {_id: {$lt : id}}}; 
var qs = $.param(opt); //results in "Illegal invocation" 

Таким образом, хранилище значений в id, вероятно, не так, как вы думаете.