2013-08-09 12 views
5

का उपयोग कर कर्ल कमांड निष्पादित करें मैंने mongoDB को निम्न इनपुट का उपयोग करके कर्ल कमांड निष्पादित किया।jquery-ajax

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

मैं जेसनपी या जेसन का उपयोग करके निष्पादित करना चाहता हूं और प्रतिक्रिया प्राप्त करना चाहता हूं। मैंने 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 

प्रॉक्सी पास अपने अपाचे में जोड़ें और इसे आजमाएं। यह काम करेगा। समस्या यह है कि आप jsonp का उपयोग करके POST अनुरोध पास नहीं कर सकते हैं। मोंगो हमें POST अनुरोधों की आवश्यकता है। यह करने का यह एक तरीका है। : डी मैंने इसका परीक्षण किया और मेरे लिए पूरी तरह से काम करता है। यह जेसन स्वीकार नहीं करेगा और आपको इसे स्ट्रिंग के रूप में पास करना होगा।

1

आप शायद कुछ भी नहीं मिलता है क्योंकि या तो आपके MongoDB उदाहरण JSONP का समर्थन नहीं करता (और आप इसे ज़रूरत है क्योंकि आम तौर पर आप क्रॉस-डोमेन ajax अनुरोध नहीं कर सकते हैं) या आपकी क्वेरी गलत है (जाहिरा तौर पर आप ?jsonp= बजाय ?callback= उपयोग करने के लिए)।

एक तरीका जेएसओएनपी का सीधे उपयोग करना होगा। आप 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?

यह (यदि आप --jsonp विकल्प के साथ MongoDB उदाहरण आग काम करना चाहिए आदेश सक्षम करने के लिए जेएसओएनपी का समर्थन)। मैंने हालांकि कोशिश नहीं की है।

इसके अलावा अन्य मुद्दे भी हो सकते हैं। उदाहरण के लिए डेटाबेस बस कनेक्शन छोड़ सकता है, हो सकता है कि आपके पास विशेषाधिकार न हो, आदि। आम तौर पर क्लाइंट से डेटाबेस से कनेक्ट करना कभी भी अच्छा विचार नहीं होता है। आपको एक वेब सर्वर को मध्य में एक आदमी के रूप में उपयोग करना चाहिए।

+0

मैं आपको कोड का उपयोग करता हूं और यह काम नहीं कर रहा है। कर्ल कमांड पूरी तरह से काम कर रहा है और यह हमेशा मुझे आउटपुट देता है। क्रिप्या मेरि सहायता करे। – ambarox

+0

मोंगो ने जेसन को स्वीकार नहीं किया और यह एक स्ट्रिंग के रूप में चला गया है। मुख्य समस्या उस से आता है। तो जेएसएसपी ने पोस्ट अनुरोधों का समर्थन नहीं किया और केवल पोस्ट स्वीकार कर लिया। अंत में मैं समाधान के साथ आया था। – ambarox