2011-06-29 13 views
9

मैं एक मोबाइल वेब एप्लिकेशन के पास निम्न संस्करणों का उपयोग कर बनाया गया है: -JQuery मोबाइल + Phonegap: अजाक्स एंड्रॉयड एम्युलेटर पर काम नहीं कर रहा कॉल

  1. JQuery मोबाइल: अल्फा 4 v1.0a4.1
  2. JQuery: v1 .6.1
  3. PhoneGap: v0.9.5

phonegap का उपयोग करना, इस आवेदन एक देशी एंड्रॉयड आवेदन में बनाया गया और तैनात है।

मेरे आवेदन में, मैं बाहरी वेबसाइटों पर $ .ajax का उपयोग करके विभिन्न AJAX कॉल करता हूं। इसके लिए मैं डेटा टाइप टाइप करता हूं: क्रॉस डोमेन कॉलिंग करने के लिए 'jsonp' inorder।

जब मैं क्रोम v12.0.742.100 में अपने ऐप का परीक्षण कर रहा था, तो सब कुछ ठीक काम कर रहा था और मुझे बाहरी साइटों से डेटा पुनर्प्राप्त करने में कोई समस्या नहीं थी। हालांकि, जैसे ही मैंने इसे एक। एपीके फ़ाइल में पैक किया और इसे एमुलेटर में चलाने की कोशिश की, मुझे लगता है कि AJAX कॉल में से कोई भी काम नहीं कर रहा है।

मैंने AJAX कॉल से पहले और बाद में अलर्ट लगाए हैं और सत्यापित किया है कि दोनों अलर्ट बुलाए जाते हैं लेकिन AJAX कॉल को अनदेखा किया जाता है। मैंने सफलता कॉलबैक और त्रुटि कॉलबैक दोनों में लॉग इन किया है और न ही पहुंचा जा रहा है। मैंने बाहरी सर्वर वेबसाइट पर ब्रेकपॉइंट डालकर भी सत्यापित किया है (मेरे परीक्षण के लिए, मेरे पास बस अपनी स्थानीय मशीन पर एक अलग वेबसाइट है) और सर्वर पेज निश्चित रूप से नहीं कहा जा रहा है। डी/SntpClient (59): अनुरोध समय विफल रहा: java.net.SocketException:

logcat में, त्रुटि कि मैं देख सकता हूँ यह है पता प्रोटोकॉल

द्वारा समर्थित नहीं परिवार मैं बहुत नया हूँ फोनगैप के साथ-साथ Jquery Mobile तक, लेकिन जहां तक ​​मेरी समझ जाती है, मेरी फोनगैप ऐप फ़ाइल को फ़ाइल द्वारा संदर्भित किया जाता है: /// प्रोटोकॉल जबकि मेरा AJAX URL http://127.0.0.1:someport/someapp/somepage और त्रुटि यह इंगित करती है कि ये दो मिश्रण नहीं हैं !! यदि यह वास्तव में मामला है, तो मैं फोनगैप परिनियोजित एप्लिकेशन से AJAX कॉल करने के बारे में कैसे जा सकता हूं?

कृपया किसी और चीज को इंगित करने में संकोच न करें जो सहायक हो सकता है! मैं इस बिंदु पर सुंदर स्टंप हूँ।

संपादित करें: मैंने AndroidManifest.xml फ़ाइल की जांच की है और इस phonegap wiki link के अनुसार सभी अनुमतियां इस फ़ाइल में सेट हैं।

संपादित करें 2: मेरे मुवक्किल पक्ष कोड में जोड़ा जा रहा है कि ajax कॉल

var serverUrl = "http://localhost:2424/MyServer/RetrieveMasterData.aspx"; 
      $.ajax({ 
       url: serverUrl, 
       type: 'POST', 
       dataType: 'jsonp', 
       data: { MasterDataID: 1 }, 
       success: function(response) { 
         ...... business logic here 
       }, 
       error: function(xhr, ajaxOptions, thrownError) { 
         ...... error handling something here 
       } 
      }); 
+0

हाय, क्या आपने इंटरनेट से कनेक्ट करने की अनुमति जोड़ दी है? – Francisc

+0

मुझे नहीं पता कि यह आपके क्रोम पर क्यों काम करता है लेकिन आपके एंड्रॉइड पर नहीं। लेकिन मुझे यकीन है कि 1 चीज यह है कि वही मूल नीति फ़ाइल पर लागू नहीं होती है: /// प्रोटोकॉल। – root

+0

क्या आप एक कोड स्निपेट पोस्ट कर सकते हैं जो समस्या दिखाता है। –

उत्तर

2

के यूआरएल को बदलने क्योंकि अनुरोध एक ही डोमेन में नहीं है की कोशिश, और मैं jqm config कि जोड़कर समस्या हल:

$(document).bind("mobileinit", function() { 
    // Make your jQuery Mobile framework configuration changes here! 

    $.mobile.allowCrossDomainPages = true; 
}); 

और यह एक कड़ी है: http://jquerymobile.com/demos/1.0/docs/pages/phonegap.html

0

एक और मुद्दा जो एंड्रॉइड 4.0+ में होता है (लेकिन 2.3 जैसे पुराने संस्करणों में नहीं) ...AJAX कॉल के लिए है जिसके लिए मूल ऑथ की आवश्यकता होती है। आपको beforeSend में प्राधिकरण शीर्षलेख मैन्युअल रूप से सेट करना होगा। आप नए उपयोगकर्ता नाम का उपयोग नहीं कर सकते: पासवर्ड: jQuery 1.7 में जोड़े गए विकल्प।

नीचे दिया गया उदाहरण दिखाता है कि आपको क्या करना है। नोट: इसके लिए बेस 64 jquery प्लगइन की आवश्यकता है।

$.ajax({ 
      url: "https://yoururl, 
      type: method, 
      dataType: 'json', 
      // username: username, // Doesn't work on ANDROID 
      // password: password, // Doesn't work on ANDROID 
      beforeSend: function (xhr) 
      { 
       xhr.setRequestHeader("Authorization", "Basic " + $.base64.encode(username + ":" + password)); 
      }, 
      data: options.data, 
      success: function(response) { 

      }, 
      error: function(jqXHR, textStatus, errorThrown) { 

      } 
     }); 
+0

मुझे लगता है कि आपका कोड जीईटी के लिए है, लेकिन, POST के बारे में क्या? डेटा कैसे भेजना है? –

संबंधित मुद्दे