2013-08-09 4 views
5

Я выполнил команду curl, используя следующий вход в mongoDB.Выполнение команды curl с помощью jquery-ajax

curl --data 'cmd={"geoNear" : "items", "near":[6.8590845,79.9800719]}' 'http://72.123.xxx.xxx:27080/weather/_cmd' 

Я хочу выполнить это с помощью jsonp или json и получить ответ. Я пробовал ниже jsonp запрос.

var url = "http://72.123.xxx.xxx:27080/weather/_cmd"; 
$.getJSON(url + "?callback=?", 
    { 
     cmd:{"geoNear" : "items", "near": 6.8590845,79.9800719]} 
    }, 
    function(tweets) { } 
); 

У меня ничего нет от консоли. Пожалуйста, помогите мне с этим. Благодарю.

+0

[Что вы пробовали?] (Http://mattgemmell.com/2008/12/08/what-have-you-tried/) – freakish

+0

Я обновляю вопрос Извините. – ambarox

ответ

5

Наконец-то я придумал решение.

$.ajax({ 
    url: '/weather/_cmd', 
    type:'POST', 
    dataType: 'json', 
    crossDomain : true, 
    data: { 
     cmd: JSON.stringify({ 
      "geoNear" : "items", 
      "near": [6.8590845,79.9800719] 
     }) 
    }, 
    success: function(res) { 
     //do stuff with res 
    } 
}); 

ProxyPass /weather http://72.123.xxx.xxx:27080/weather/_cmd 
ProxyPassReverse /weather http://72.123.xxx.xxx:27080/weather/_cmd 

Добавить выше Прокси передайте свой Apache и попробуйте это. это будет работать. проблема заключается в том, что вы не можете передать запрос POST с помощью jsonp. mongo нам нужны POST-запросы. это один из способов сделать это. : D я тестировал его и отлично работал для меня. он не примет json, и вы должны передать его как строку.

1

Вы, вероятно, ничего не получить, потому что либо ваш экземпляр MongoDB не поддерживает JSONP (и вам это нужно, потому что обычно вы не можете делать запросы AJAX междоменные) или ваш запрос неправильно (по-видимому, вы должны использовать ?jsonp= вместо ?callback=).

Один из способов - использовать JSONP напрямую. Так как вы используете JQuery вы могли бы попробовать что-то вроде этого:

$.ajax({ 
    url: 'http://72.123.xxx.xxx:27080/weather/_cmd', 
    dataType: 'jsonp', 
    jsonp: 'jsonp', // <-- the name used in '?jsonp=' part of url 
    data: { 
     cmd: { 
      "geoNear" : "items", 
      "near": [6.8590845,79.9800719] 
     } 
    }, 
    success: function(res) { 
     console.log(res); 
    } 
}); 

Согласно этому StackOverflow ответ:

Does MongoDB have a native REST interface?

он должен работать, если запустить экземпляр MongoDB с --jsonp вариант (для того, чтобы дать возможность поддержка JSONP). Однако я не пробовал.

Также могут возникнуть другие проблемы. Например, база данных может просто удалить соединение, у вас могут не быть привилегий и т. Д. Как правило, никогда не рекомендуется напрямую подключаться от клиента к базе данных. Вы должны использовать веб-сервер в качестве человека посередине.

+0

Я использую ваш код и его не работает. Команда Curl работает отлично, и она всегда дает мне результат. Пожалуйста, помогите мне. – ambarox

+0

Mongo не принял json, и он пошел как строка. из этого вытекает основная проблема. то jsonp не поддерживал почтовые запросы, а mongo принимал только сообщение. Наконец я придумал решение. – ambarox

Смежные вопросы