2013-03-05 11 views
13

के साथ काम नहीं करता है मुझे फ़ोनगैप बिल्ड का उपयोग कर एक एंड्रॉइड एप्लिकेशन में एक jQuery AJAX पोस्ट करने में समस्या हो रही है। मैं जोड़ लिया है:jQuery AJAX POST फ़ोनगैप बिल्ड

  1. config.xml: सेट का उपयोग कर सकते मूल *
  2. सभी HTML फ़ाइलों: $ सेट .support.cors = true $ .mobile.allowCrossDomainPages = सत्य;
  3. दूरस्थ सर्वर पर: पहुंच-नियंत्रण-अनुमति दें-उत्पत्ति के लिए सेट मूल्यों, पहुंच-नियंत्रण-अनुमति दें-हेडर

मैं इस का उत्तर के लिए उच्च और निम्न ध्यान दिया है। मैं विवादित जानकारी देकर कई पदों से गुजर चुका हूं, और मैंने कई समाधानों का उल्लेख किया है, लेकिन उनमें से कोई भी काम नहीं करता है।

यहाँ मैं क्या करने की कोशिश कर रहा हूँ क्या है:

$.ajax({ 
    type: "POST", 
    url: "http://mydomain.com/mypage.aspx/myweb...", 
    data: "{'sEnquiryText':'" + $("#textareaEnq")[0].value + "'}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(data) { // Response function 
    if (data.d == "Success") 
     $("#lblInfoMsg").html("Enquiry sent successfully !"); 
    else 
     $("#lblInfoMsg").html(data.d); 
    } 
}); 

यह एक वेब अनुप्रयोग जब एक अलग डोमेन (myseconddomain.com/mywebapp) के साथ ही स्थानीय आईआईएस पर स्थापित के रूप में ठीक काम करता है (स्थानीय होस्ट/mywebapp) । लेकिन यह फोनगैप बिल्ड का उपयोग करके किए गए एंड्रॉइड ऐप पर काम नहीं करता है।

अगर कोई इस मुद्दे को देख सकता है, तो मैं इसकी सराहना करता हूं।

+1

त्रुटि या सफलता कॉलबैक क्या है? –

+1

त्रुटि कॉलबैक हैंडलर जोड़ने का प्रयास करें ताकि आप देख सकें कि HTTP स्थिति कोड क्या है या त्रुटि संदेश क्या है। क्या आप यह निर्धारित कर सकते हैं कि एंड्रॉइड से अनुरोध आपके सर्वर पर है या नहीं? –

+0

मैं जोड़ा 'त्रुटि: समारोह (XHR, ajaxOptions, thrownError) {\t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t चेतावनी (" errorstatus: "+ xhr.status +" ajaxoptions: "+ AJAXOptions +" throwError: "+ thrownError); \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t} ' –

उत्तर

6

आप जोड़ने के कई घंटे के बाद करने के लिए "रेस/xml/config.xml" कुछ की तरह

<access origin="http://127.0.0.1*"/> <!-- allow local pages --> 

<access origin="https://example.com" /> 

<access origin="https://example.com" subdomains="true" /> 

<access origin=".*"/> 
+0

मुझे एक ही समस्या है लेकिन काम नहीं कर रहा ............... –

+0

इन्हें फोनगैप रूट में * config.xml * में जोड़ना * www * निर्देशिका शायद उन्हें मंच पर जोड़ने से बेहतर है कॉन्फ़िगरेशन यदि आप उपयोग करना चाहते हैं, उदाहरण के लिए, 'फोनगैप स्थानीय बिल्ड आईओएस'। – sffc

2

जवाब है, मैं यह निष्कर्ष निकाला गया है की जरूरत है, कि XHReq पोस्ट एक Android WebView, अंदर समर्थित नहीं है, पर है मैं एंड्रॉइड 4.03 डिवाइस पर फोनगैप द्वारा डिफ़ॉल्ट सेटअप में कम से कम उपयोग कर रहा हूं; tcpdump से पता चलता है कि अनुरोध सही डिवाइस और पथ के लिए डिवाइस से बाहर आता है, लेकिन कोई पोस्ट डेटा के साथ, GET के रूप में। मैंने श्वेतसूची (फोनगैप डिफ़ॉल्ट वर्तमान में "*", इसलिए कोई समस्या नहीं) की जांच की है, यह सुनिश्चित किया है कि यह "पोस्ट कैशिंग" मुद्दा नहीं था (अनुरोध url में t = t = जोड़कर), और सुनिश्चित किया कि मैं केवल एसिंक्रोनस अनुरोध कर रहा था । वही परिणाम; पोस्ट एक जीईटी के रूप में आता है, और सभी पोस्ट डेटा खो गया है।

मेरा समाधान "http://mydomain.com/endpoint?post-data=url-encoded-data-here&t=timestamp-here" जैसे यूआरएल के माध्यम से पोस्ट डेटा भेजने की आवश्यकता से बचने के लिए, इस फ़ंक्शन के लिए GET का उपयोग करने के लिए स्विच करने के लिए स्विच किया गया है। यह संभव था क्योंकि मेरे सर्वर के अंत में भी नियंत्रण था, अंत में बदलना, पूर्व में केवल पोस्ट-केवल ऑपरेशन को GET पर अनुमति देने के लिए, यदि डेटा इस तरह से रेखांकित किया गया है।

अपडेट: मैं इस मुद्दे पर वापस आया क्योंकि मैं वास्तव में अन्य कारणों से काम करने के लिए पोस्ट चाहता था (पोस्ट # 21192670 देखें)।

कारण क्यों मेरे डोमेन की एमएक्स कॉन्फ़िगरेशन और पसंद (या इसकी कमी) उप-डोमेन की वजह से POSTs विफल रहा था; मैंने पोस्ट यूआरएल में रूट डोमेन का इस्तेमाल किया, लेकिन एमएक्स रिकॉर्ड ने wwww.mydomain.com पर यह निर्देश दिया था, जिसे बाद में सही आईपी पते की ओर इशारा किया गया था। पोस्ट उस रीडायरेक्ट के माध्यम से नहीं हो रहा था।

+0

मुझे वर्तमान में यह वही समस्या है, लेकिन इसे हल करने के लिए प्रतीत नहीं होता है (वास्तव में AJAX अनुरोधों को 'GET' अनुरोधों में परिवर्तित नहीं करेगा)। – tommybond