Jquery

2012-01-13 10 views
6

के साथ क्रॉस डोमेन समस्या मैं किसी अन्य डोमेन में webservice तक पहुंचने का प्रयास कर रहा हूं और यह कुछ भी नहीं देता है। बाद में मुझे पता चला कि यह क्रॉस डोमेन एसेस का मुद्दा था।Jquery

मैंने ऑनलाइन खोज की और बहुत सारे लेख हैं लेकिन मेरे जैसे नौसिखिया द्वारा कोई भी पठनीय नहीं है। :(

किसी ने मुझे बाहर करने में मदद कर सकते हैं कि वेब सेवा ??

निम्नलिखित का उपयोग करने की मेरी कोड है।

//variables for Add Contacts 
var addAccountServiceUrl = 'http://crm.eyepax.net/organization.asmx?op=WriteOrg'; // Preferably write this out from server side 
var OrganizationID=123; 
var ParentID=123 ; 
var AccountManagerID="123"; 
var OrganizationName="Testapple"; 
var IncorporationNo="23"; 
var PostAddress="asdfklj asldfj"; 
var CountryID="LK"; 
var VisitAddress="asldkf asldkf asldfas dfasdf"; 
var VisitCountryID="LK"; 
var VisitSwithboard="242344"; 
var VisitFax="234234"; 
var Www="http://www.eyepax.com"; 
var Active=true; 
var RegBy=345345345345; 
var ConfigurationCode="[email protected]"; 
var Flag=1; 
var LicenceOrganazationID=1; 
var sErr; 

function addContact() 
{ 
//this is to be commented soon! 
alert("function called"); 
//update the webservice soapmesg 

var soapMessage = 
'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> \ 
<soap:Body> \ 
    <WriteOrg xmlns="http://eyepax.crm.com/Organization"> \ 
     <OrganizationID>'+OrganizationID+'</OrganizationID> \ 
     <ParentID>'+ParentID+'</ParentID> \ 
     <AccountManagerID>'+AccountManagerID+'</AccountManagerID> \ 
     <OrganizationName>'+OrganizationName+'</OrganizationName> \ 
     <IncorporationNo>'+IncorporationNo+'</IncorporationNo> \ 
     <PostAddress>'+PostAddress+'</PostAddress> \ 
     <CountryID>'+CountryID+'</CountryID> \ 
     <VisitAddress>'+VisitAddress+'</VisitAddress> \ 
     <VisitCountryID>'+VisitCountryID+'</VisitCountryID> \ 
     <VisitSwithboard>'+VisitSwithboard+'</VisitSwithboard> \ 
     <VisitFax>'+VisitFax+'</VisitFax> \ 
     <Www>'+Www+'</Www> \ 
     <Active>'+Active+'</Active> \ 
     <RegBy>'+RegBy+'</RegBy> \ 
     <ConfigurationCode>'+ConfigurationCode+'</ConfigurationCode> \ 
     <Flag>'+Flag+'</Flag> \ 
     <LicenceOrganazationID>'+LicenceOrganazationID+'</LicenceOrganazationID> \ 
    </WriteOrg> \ 
    </soap:Body> \ 
</soap:Envelope>'; 

$.ajax({ 
url: addAccountServiceUrl, 
type: "POST", 
dataType: "xml", 
data: soapMessage, 
success: endAddContact, 
error: function(jqXHR, textStatus, errorThrown) {alert("failure"); console.log(textStatus);console.log(errorThrown);}, 
contentType: "text/xml; charset=\"utf-8\"" 
}); 

return false; 
} 

function endAddContact(xmlHttpRequest, status) 
{ 
    console.log(xmlHttpRequest); 
    console.log(status); 
    alert("webservice called!"); 
$(xmlHttpRequest.responseXML) 
    .find('WriteOrgResponse') 
    .each(function() 
{ 
    var orgres = $(this).find('WriteOrgResult').text(); 
    var error = $(this).find('vstrError').text(); 

    alert(orgres +' -'+ error); 
}); 

var a = $(xmlHttpRequest.responseXML).find('WriteOrgResult'); 
var b = $(xmlHttpRequest.responseXML).find('vstrError'); 
console.log("a"+a.text()); 
console.log("b"+b.text()); 
} 
+0

क्या आप ऐसा करने में सक्षम हैं? –

उत्तर

5

ब्राउज़र क्रॉस-डोमेन AJAX के लिए कहता है। केवल क्रॉस-डोमेन JSONP अनुरोध की अनुमति नहीं है की अनुमति है।

JSONP अनुरोधों का उपयोग करने के लिए आपको jsonp को dataType संपत्ति बदलना होगा। इसका मतलब है आप एक्सएमएल अनुरोध नहीं कर सकते, लेकिन, लेकिन JSONP केवल।


JSONP बारे में संक्षिप्त जानकारी:

<script> टैग नजरअंदाज क्रॉस-डोमेन सीमाओं। जिसका अर्थ है कि आप अन्य सर्वर से डेटा प्राप्त करने के लिए उस टैग का उपयोग कर सकते हैं। वह टैग सभी प्रकार की भाषाओं का समर्थन नहीं करता है, इसलिए एक्सएमएल समर्थित नहीं है।

JSONP मूल रूप से JSON है, लेकिन इस तरह के चारों ओर एक समारोह कॉल के साथ:

functionname({"property":"value"})

मैं आप सोच देख सकते हैं: "क्या है कि functionName वहाँ क्या कर रहा है"

यह जेएसओएन के साथ बिल्कुल अंतर है। क्योंकि फ़ंक्शन इसके चारों ओर लपेटा गया है, आप वास्तविक डेटा का उपयोग कर सकते हैं!

<script type="text/javascript"> 
var functionname = function(json) { 
    alert(json.property); 
} 
</script> 
<script type="text/javascript" src="http://www.domain.com/jsonp"></script> 

आप प्रतिक्रिया सामग्री के साथ दूसरे स्क्रिप्ट टैग की जगह है, यह सब कर देंगे भावना:

<script type="text/javascript"> 
var functionname = function(json) { 
    alert(json.property); 
} 

functionname({"property":"value"}); 
</script> 

मानो या न मानो, लेकिन यह मामूली अंतर वास्तव में क्रॉस-डोमेन बनाने के लिए सक्षम बनाता अनुरोध अधिक सुरक्षित है।

Another thread about JSONP

3
जावास्क्रिप्ट का उपयोग कर आप या तो एक स्थानीय प्रॉक्सी का उपयोग करने वाले बाहरी डोमेन के लिए अनुरोध पास या गद्दी उर्फ ​​ JSONP साथ JSON उपयोग करने की आवश्यकता क्रॉस डोमेन संचार के लिए

यदि बाहरी साइट JSONP का उपयोग करने की संभावना प्रदान करती है, तो उसके साथ जाएं। यदि नहीं, तो अपने वेब ऐप और रिमोट सर्वर के बीच creating a proxy देखें।