दिलचस्प पोस्ट
JQuery में 2 वर्गों को टॉगल करने का सबसे आसान तरीका एक JTextField को लंबवत घूर्णन करना शुद्ध सीएसएस बहु स्तरीय ड्रॉप-डाउन मेनू क्यों सी # 3.0 ऑब्जेक्ट initializer कन्स्ट्रक्टर कोष्ठक वैकल्पिक हैं? एक पैरामीटर में डॉट के साथ मार्गों से मिलान करने में असफल क्यों होते हैं? एएसपी.नेट एमवीसी में देखेंबैग कैसे काम करता है एक वेबसाइट का परीक्षण करने का सबसे अच्छा तरीका पायथन 2.6 में यूनिकोड_लिटरल्स का उपयोग करने वाला कोई मिला? एंड्रॉइड: एक सर्वर पर समय-समय पर स्थान कैसे भेजा जाता है SQL सर्वर 2008 में स्प्लिट फ़ंक्शन Word 2007 .docx फ़ाइल में मैं शब्द कैसे खोज सकता हूं? CA2202, कैसे इस मामले को हल करने के लिए डेटा के सबसेट पर आंकड़े की गणना करना बयान के बाद वैरिएबल घोषणाएं अपने संबंधित मूल्यों के आधार पर सॉर्ट किया गया एनएसएडीआई कुंजियाँ

जावास्क्रिप्ट में HTTP अनुरोध प्राप्त है?

मुझे जावास्क्रिप्ट में एक HTTP GET अनुरोध करना होगा ऐसा करने का सबसे अच्छा तरीका क्या है?

मुझे इसे मैक ओएस एक्स डैशकोड विजेट में करना होगा।

वेब के समाधान से एकत्रित समाधान "जावास्क्रिप्ट में HTTP अनुरोध प्राप्त है?"

आप जावास्क्रिप्ट के माध्यम से होस्टिंग पर्यावरण द्वारा प्रदत्त कार्यों का उपयोग कर सकते हैं:

function httpGet(theUrl) { var xmlHttp = new XMLHttpRequest(); xmlHttp.open( "GET", theUrl, false ); // false for synchronous request xmlHttp.send( null ); return xmlHttp.responseText; } 

हालांकि, तुल्यकालिक अनुरोधों को हतोत्साहित किया जाता है, इसलिए आप इसे इसके बजाय उपयोग करना चाह सकते हैं:

 function httpGetAsync(theUrl, callback) { var xmlHttp = new XMLHttpRequest(); xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) callback(xmlHttp.responseText); } xmlHttp.open("GET", theUrl, true); // true for asynchronous xmlHttp.send(null); } 

नोट: Gecko 30.0 (Firefox 30.0 / Thunderbird 30.0 / SeaMonkey 2.27) के साथ शुरू होने पर, मुख्य थ्रेड पर सिंक्रोनस अनुरोध उपयोगकर्ताओं के अनुभव पर नकारात्मक प्रभावों के कारण नापसंद कर दिया गया है।

JQuery में :

 $.get( "somepage.php", {paramOne : 1, paramX : 'abc'}, function(data) { alert('page content: ' + data); } ); 

ऊपर बहुत अच्छी सलाह है, लेकिन बहुत पुन: प्रयोज्य नहीं है, और अक्सर डोम बकवास और अन्य फ़्लिकर से भर जाता है जो आसान कोड छुपाता है।

यहां एक जावास्क्रिप्ट वर्ग है जिसे हमने पुन: प्रयोज्य और प्रयोग में आसान बनाया। वर्तमान में यह केवल एक GET विधि है, लेकिन यह हमारे लिए काम करता है किसी पोस्ट को जोड़ना किसी को भी कौशल नहीं करना चाहिए

 var HttpClient = function() { this.get = function(aUrl, aCallback) { var anHttpRequest = new XMLHttpRequest(); anHttpRequest.onreadystatechange = function() { if (anHttpRequest.readyState == 4 && anHttpRequest.status == 200) aCallback(anHttpRequest.responseText); } anHttpRequest.open( "GET", aUrl, true ); anHttpRequest.send( null ); } } 

इसका प्रयोग करना आसान है:

 var client = new HttpClient(); client.get('http://some/thing?with=arguments', function(response) { // do something with response }); 

कॉलबैक के बिना एक संस्करण

 var i = document.createElement("img"); i.src = "/your/GET/url?params=here"; 

यहां जावास्क्रिप्ट के साथ सीधे यह कोड है लेकिन, जैसा कि पहले उल्लेख किया गया है, आप जावास्क्रिप्ट लाइब्रेरी से बेहतर होगा। मेरा पसंदीदा jQuery है

नीचे दिए गए मामले में, एक एएसपीएक्स पृष्ठ (जो कि एक गरीब व्यक्ति की आरएएसटी सेवा के रूप में सेवा कर रहा है) को जावास्क्रिप्ट जेएसएएन वस्तु वापस करने के लिए बुलाया जा रहा है।

 var xmlHttp = null; function GetCustomerInfo() { var CustomerNumber = document.getElementById( "TextBoxCustomerNumber" ).value; var Url = "GetCustomerInfoAsJson.aspx?number=" + CustomerNumber; xmlHttp = new XMLHttpRequest(); xmlHttp.onreadystatechange = ProcessRequest; xmlHttp.open( "GET", Url, true ); xmlHttp.send( null ); } function ProcessRequest() { if ( xmlHttp.readyState == 4 && xmlHttp.status == 200 ) { if ( xmlHttp.responseText == "Not found" ) { document.getElementById( "TextBoxCustomerName" ).value = "Not found"; document.getElementById( "TextBoxCustomerAddress" ).value = ""; } else { var info = eval ( "(" + xmlHttp.responseText + ")" ); // No parsing necessary with JSON! document.getElementById( "TextBoxCustomerName" ).value = info.jsonData[ 0 ].cmname; document.getElementById( "TextBoxCustomerAddress" ).value = info.jsonData[ 0 ].cmaddr1; } } } 

नई window.fetch एपीआई XMLHttpRequest लिए क्लीनर प्रतिस्थापन है जो window.fetch वादों का उपयोग करता है। यहां एक अच्छी व्याख्या है , लेकिन यह (आलेख से) नीचे उबाल है:

 fetch(url).then(function(response) { return response.json(); }).then(function(data) { console.log(data); }).catch(function() { console.log("Booo"); }); 

ब्राउज़र का समर्थन अब नवीनतम रिलीज़ (क्रोम, फ़ायरफ़ॉक्स, एज (वी 14), सफारी (v10.1), ओपेरा, सफारी आईओएस (v10.3), एंड्रॉइड ब्राउज़र और क्रोम एंड्रॉइड के लिए काम करता है), हालांकि आईई संभवतः आधिकारिक समर्थन नहीं मिलता है गीथहब के पास एक पॉलीफिल उपलब्ध है, जो पुराने ब्राउज़रों को अब भी बड़े पैमाने पर उपयोग करने के लिए अनुशंसित है (मार्च 2011 से पहले सफ़ारी के विशेष संस्करण और इसी अवधि से मोबाइल ब्राउज़र)।

मुझे लगता है कि यह jQuery या XMLHttpRequest से अधिक सुविधाजनक है या नहीं, परियोजना की प्रकृति पर निर्भर करता है।

यहां युक्ति https://fetch.spec.whatwg.org/ पर एक लिंक है

प्रतिलिपि तैयार संस्करण

 var request = new XMLHttpRequest(); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { document.body.className = 'ok'; console.log(request.responseText); } else { document.body.className = 'error'; } } }; request.open("GET", url , true); request.send(null); 

आईई तेजी से लोड करने के लिए यूआरएल कैश करेगा, लेकिन अगर आप कह रहे हैं, नई जानकारी प्राप्त करने के लिए अंतराल पर एक सर्वर पर मतदान करना, आईई उस यूआरएल को कैश करेगा और संभवत: आपके पास वही डाटा वापस करेगा जो आपने हमेशा किया था।

चाहे आप अपने GET अनुरोध – वैनिला जावास्क्रिप्ट, प्रोटोटाइप, jQuery, आदि को समाप्त करने के बावजूद – सुनिश्चित करें कि आप कैशिंग से निपटने के लिए जगह में एक तंत्र डालते हैं। इसका मुकाबला करने के लिए, उस यूआरएल के अंत में एक अनन्य टोकन जोड़ें जो आप मार रहे होंगे। यह निम्न द्वारा किया जा सकता है:

 var sURL = '/your/url.html?' + (new Date()).getTime(); 

यह यूआरएल के अंत में एक अनन्य टाइमस्टैम्प संलग्न करेगा और ऐसा होने से कैशिंग को रोक देगा।

प्रोटोटाइप इसे मृत सरल बनाता है

 new Ajax.Request( '/myurl', { method: 'get', parameters: { 'param1': 'value1'}, onSuccess: function(response){ alert(response.responseText); }, onFailure: function(){ alert('ERROR'); } }); 

मै मैक ओएस डैशकोड विजेट से परिचित नहीं हूं, लेकिन अगर आप जावास्क्रिप्ट लाइब्रेरी का इस्तेमाल करते हैं और XMLHttpRequests का समर्थन करते हैं, तो मैं jQuery का उपयोग करता हूं और ऐसा कुछ करता हूं:

 var page_content; $.get( "somepage.php", function(data){ page_content = data; }); 

अपने विजेट की Info.plist फ़ाइल में, अपने AllowNetworkAccess कुंजी को सही पर सेट करने के लिए मत भूलें।

AngularJs का उपयोग करने वालों के लिए, यह $http.get :

 $http.get('/someUrl'). success(function(data, status, headers, config) { // this callback will be called asynchronously // when the response is available }). error(function(data, status, headers, config) { // called asynchronously if an error occurs // or server returns response with an error status. }); 

सबसे अच्छा तरीका AJAX का उपयोग करना है (आप इस पृष्ठ पर एक साधारण ट्यूटोरियल पा सकते हैं Tizag )। इसका कारण यह है कि किसी भी अन्य तकनीक का उपयोग करने के लिए अधिक कोड की आवश्यकता होती है, क्रोक ब्राउज़र को बिना काम के काम करने की गारंटी दी जाती है और आपको अपने क्लाइंट मेमोरी का उपयोग करके अपने डेटा को पार्स करने वाले यूआरएल पास करने वाले फ्रेम के अंदर छिपा हुआ पृष्ठों को खोलकर और उन्हें बंद कराना होगा। AJAX इस स्थिति में जाने का तरीका है। कि मेरे दो साल के जावास्क्रिप्ट भारी विकास बोल रहा है

आप दो तरीकों से एक HTTP GET अनुरोध प्राप्त कर सकते हैं:

  1. एक्सएमएल प्रारूप पर आधारित यह दृष्टिकोण आपको अनुरोध के लिए यूआरएल पास करना होगा।

     xmlhttp.open("GET","URL",true); xmlhttp.send(); 
  2. यह एक jQuery पर आधारित है। आपको उस URL और function_name को निर्दिष्ट करना होगा जिसे आप कॉल करना चाहते हैं।

     $("btn").click(function() { $.ajax({url: "demo_test.txt", success: function_name(result) { $("#innerdiv").html(result); }}); }); 
 function get(path) { var form = document.createElement("form"); form.setAttribute("method", "get"); form.setAttribute("action", path); document.body.appendChild(form); form.submit(); } get('/my/url/') 

उसी तरह पोस्ट अनुरोध के लिए भी किया जा सकता है
इस लिंक पर एक नज़र डालें। जावास्क्रिप्ट पोस्ट का अनुरोध एक फॉर्म सबमिट करें

लघु और शुद्ध:

 const http = new XMLHttpRequest() http.open("GET", "https://api.lyrics.ovh/v1/shakira/waka-waka") http.send() http.onload = () => console.log(http.responseText) 

अजाक्स

आप प्रोटोटाइप या jQuery जैसी लाइब्रेरी का उपयोग करना चाहते हैं।

यह भी REQUESTIFY- एक लाइब्रेरी जो नोड HTTP अनुरोध बनाने के लिए सरल बनाने का प्रयास करने के लिए बहुत उपयोगी साबित हो सकता है।

https://github.com/ranm8/requestify

 var requestify = require('requestify'); 

अनुरोध प्राप्त करना:

 requestify.get('http://example.com').then(function(response) { // Get the response body response.getBody(); }); 

और json के लिए:

 requestify.post('http://example.com', { hello: 'world' }) .then(function(response) { // Get the response body (JSON parsed or jQuery object for XMLs) response.getBody(); // Get the raw response body response.body; }); 

पुराने ब्राउज़र्स का समर्थन करने वाला एक समाधान:

 function httpRequest() { var ajax = null, response = null, self = this; this.method = null; this.url = null; this.async = true; this.data = null; this.send = function() { ajax.open(this.method, this.url, this.asnyc); ajax.send(this.data); }; if(window.XMLHttpRequest) { ajax = new XMLHttpRequest(); } else if(window.ActiveXObject) { try { ajax = new ActiveXObject("Msxml2.XMLHTTP.6.0"); } catch(e) { try { ajax = new ActiveXObject("Msxml2.XMLHTTP.3.0"); } catch(ee) { self.fail("not supported"); } } } if(ajax == null) { return false; } ajax.onreadystatechange = function() { if(this.readyState == 4) { if(this.status == 200) { self.success(this.responseText); } else { self.fail(this.status + " - " + this.statusText); } } }; } 

हो सकता है कि कुछ हद तक उतार-चढ़ाव हो, लेकिन आप निश्चित रूप से इस कोड के साथ सुरक्षित रहें।

उपयोग:

 //create request with its porperties var request = new httpRequest(); request.method = "GET"; request.url = "https://example.com/api?parameter=value"; //create callback for success containing the response request.success = function(response) { console.log(response); }; //and a fail callback containing the error request.fail = function(error) { console.log(error); }; //and finally send it away request.send(); 

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

जैसा कि एंड्रयू हेजस द्वारा रिपोर्ट किया गया, एक विजेट का डिफ़ॉल्ट रूप से नेटवर्क तक पहुंच नहीं है; आपको विजेट के साथ जुड़े info.plist में उस सेटिंग को बदलना होगा।

आप इसे शुद्ध जेएस से भी कर सकते हैं:

 // Create the XHR object. function createCORSRequest(method, url) { var xhr = new XMLHttpRequest(); if ("withCredentials" in xhr) { // XHR for Chrome/Firefox/Opera/Safari. xhr.open(method, url, true); } else if (typeof XDomainRequest != "undefined") { // XDomainRequest for IE. xhr = new XDomainRequest(); xhr.open(method, url); } else { // CORS not supported. xhr = null; } return xhr; } // Make the actual CORS request. function makeCorsRequest() { // This is a sample server that supports CORS. var url = 'http://html5rocks-cors.s3-website-us-east-1.amazonaws.com/index.html'; var xhr = createCORSRequest('GET', url); if (!xhr) { alert('CORS not supported'); return; } // Response handlers. xhr.onload = function() { var text = xhr.responseText; alert('Response from CORS request to ' + url + ': ' + text); }; xhr.onerror = function() { alert('Woops, there was an error making the request.'); }; xhr.send(); } 

देखें: अधिक विवरण के लिए: html5rocks tutorial