2013-08-14 13 views
5

मैं एक Google क्रोम ब्राउज़र एक्सटेंशन बना रहा हूं जो $.ajax का उपयोग करता है जो मेरे सर्वर पर वेबपृष्ठों से डेटा भेजने के लिए अनुरोध करता है (वर्तमान में लोकलहोस्ट का उपयोग करके होस्ट किया गया है)। content_script.js फ़ाइल है कि (more on content scripts) वेबपेजों के संदर्भ में निष्पादित किया जा रहा है विस्तार के लिए इस कोड रन की पहुंच न हो:अजाक्स अनुरोध सफल हुआ लेकिन परिणाम खाली है

//note: encode64String is assigned earlier in the script... 

$.ajax({ 
type: "POST", 
url: "http://localhost:8888/quartzsite/uploadendpoint.php", 
type: "jsonp", 
data: {img: encode64String}, 
contentType: "application/x-www-form-urlencoded;charset=UTF-8", 
success: function(data){ 
    console.log("The ajax request succeeded!"); 
    console.log("The result is: "); 
    console.log(data); 
}, 
error: function(){ 
    console.log("The request failed"); 
} 
}); 

समस्या यह है कि Ajax अनुरोध सफलता मिल रही है है, लेकिन data तर्क है कि यह देता है enter image description here

वर्तमान में uploadedendpoint.php फ़ाइल की सामग्री हैं:: के बाद कोड चलता है खाली ...

कंसोल इस तरह दिखता है

0,123,
<?php 
    header("Access-Control-Allow-Origin: *"); 
    echo 'This comes from php file'; die(); 
?> 

<!DOCTYPE html> 
<html> 
<head> 
    <title>Title of the document</title> 
</head> 

<body> 
The content of the document...... 
</body> 

</html> 

इसका मतलब है कि data चर में कम से कम कुछ लौटाया जाना चाहिए।

मैंने और पुष्टि की है कि अनुरोध सफल रहा है क्योंकि जब मैं टूटा हुआ यूआरएल (यानी uploaddddddendpoint.php) के अनुरोध को भेजता हूं तो $.ajax के error पैरामीटर के अंदर कोड निष्पादित किया जाता है।

मैं jQuery $.ajax response empty, but only in Chrome की तरह लेकिन कोई लाभ नहीं हुआ इसी तरह के सवाल को पढ़ लिया है ...

अद्यतन:

मैं अमान्य दूसरा type: "jsonp" पैरामीटर पूरी तरह से हटा दिया है और dataType: "text/html" जोड़ लिया है। अब कोड को चलाने पर हर बार ajax अनुरोध विफल रहा है।

अद्यतन: अजीब dataType : "html" को dataType : "text/html" बदल रहा एक खाली data चर के साथ फिर से सफल हो लेकिन करने के लिए ajax अनुरोध का कारण बनता है। अद्यतन: देव टूलकिट का उपयोग करते समय नेटवर्क एक्सएचआर इन भेजा/प्रतिक्रिया संदेशों की निगरानी करने के लिए:

enter image description here enter image description here

के साथ संभव दोहराव का झंडा के संबंध को Impossible to cross site ajax api calls in a chrome extension? मैं अन्यथा सुझाव है! मैंने उस प्रश्न की जांच की है और समस्या एक जैसी प्रतीत नहीं होती है।

+0

PHP फ़ाइल की अपनी पहली पंक्ति पर इसे आज़माएं: ' '- जांचें कि क्या आपको यह कंसोल में मिलता है। – Sergio

+0

नेटवर्क टैब क्या दिखाता है? 'jsonp' प्रकार को हटाने का प्रयास करें। – akonsu

+0

@ सर्जियो कोई बदलाव नहीं ... – Brannon

उत्तर

2

आपके AJAX अनुरोध में आपके पास दो type फ़ील्ड क्यों हैं? jsonp और POST

$.ajax({ 
    type: "POST", // OK 
    url: "http://localhost:8888/quartzsite/uploadendpoint.php", 
    type: "jsonp", // ??? 
    // ... 
}); 

अद्यतन:

मैं तुम्हें URL के लिए रिश्तेदार पथ का उपयोग किया जाना चाहिए। निम्नलिखित के लिए आपके अनुरोध को बदलने का प्रयास करें:

$.ajax({ 
    type: "POST", 
    url: "/quartzsite/uploadendpoint.php", 
    dataType: "text/html", 
    data: {img: encode64String}, 
    success: function(data){ 
     console.log("The ajax request succeeded!"); 
     console.log("The result is: "); 
     console.dir(data); 
    }, 
    error: function(){ 
     console.log("The request failed"); 
    } 
}); 

आप देख सकते हैं मैं /quartzsite/uploadendpoint.php साथ यूआरएल बदल दिया। इससे समस्या हल हो सकती है ... पूर्ण यूआरएल एक क्रॉस-डोमेन अनुरोध को संकेत दे सकता है जो आपके बाद नहीं है।

इसके अलावा, एक साइड नोट के रूप में, सामग्री टाइप करने के लिए अनावश्यक है, क्योंकि आप इसे पहले से डिफ़ॉल्ट मान के रूप में सेट कर रहे हैं। यदि आप JSON या XML भेज रहे थे, तो आप सामग्री टाइप सेट करना चाहते हैं।

+0

अच्छा पकड़ो! मैंने "jsonp" प्रकार को हटा दिया है और सही 'डेटा टाइप' जोड़ा है। अनुरोध अब पूरी तरह विफल रहा है (जो वास्तव में संकेत दे सकता है कि यह पहले झूठी सकारात्मक दे रहा था)। – Brannon

+1

आपको अपने अनुरोध में कहीं भी "jsonp" का उपयोग नहीं करना चाहिए। यह क्रॉस-डोमेन अनुरोधों के लिए एक उन्नत तरीका है और मुझे संदेह है कि आपको इसकी आवश्यकता है। क्या आपके पास अभी भी है? – ktm5124

+0

मैंने हटा दिया 'jsonp' – Brannon

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