javascript - open - xmlhttprequest post json
JavaScript XMLHttpRequest usando JsonP (3)
JSONP no utiliza XMLHttpRequests.
La razón por la que se utiliza JSONP es para superar las restricciones de origen cruzado de los XHR.
En cambio, los datos se recuperan a través de un script.
function jsonp(url, callback) {
var callbackName = ''jsonp_callback_'' + Math.round(100000 * Math.random());
window[callbackName] = function(data) {
delete window[callbackName];
document.body.removeChild(script);
callback(data);
};
var script = document.createElement(''script'');
script.src = url + (url.indexOf(''?'') >= 0 ? ''&'' : ''?'') + ''callback='' + callbackName;
document.body.appendChild(script);
}
jsonp(''http://www.helloword.com'', function(data) {
alert(data);
});
En interés de la simplicidad, esto no incluye el manejo de errores si la solicitud falla. Use script.onerror
si lo necesita.
Deseo enviar parámetros de solicitud a otro dominio
Ya sé que Cross Scripting necesita JsonP y he usado JsonP con Jquery ajax
pero no entiendo cómo hacer Cross Scripting como usando XMLHttpRequest
código siguiente mi código XMLHttpRequest básico.
Supongo que necesito xhr.setRequestHeader()
y tengo que agregar el código de análisis
por favor dame alguna idea
var xhr;
function createXMLHttpRequest(){
if(window.AtiveXObject){
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}else{
xhr = new XMLHttpRequest();
}
var url = "http://www.helloword.com";
}
function openRequest(){
createXMLHttpRequest();
xhr.onreadystatechange = getdata;
xhr.open("POST",url,true);
xhr.setRequestHeader("Content-Type",''application/x-www-form-urlencoded'');
xhr.send(data);
}
function getdata(){
if(xhr.readyState==4){
if(xhr.status==200){
var txt = xhr.responseText;
alert(txt);
}
}
}
No puede hacer Cross Scripting usando XMLHttpRequest. Si desea cruzar un dominio sin Jquery, debe crear un nuevo nodo de script y establecer el atributo src del mismo.
Sé que ya obtuviste la respuesta, pero si alguien más quiere un ejemplo de alguien que hace promesas, aquí hay una.
function jsonp(url) {
return new Promise(function(resolve, reject) {
let script = document.createElement(''script'')
const name = "_jsonp_" + Math.round(100000 * Math.random());
//url formatting
if (url.match(//?/)) url += "&callback="+name
else url += "?callback="+name
script.src = url;
window[name] = function(data) {
resolve(data);
document.body.removeChild(script);
delete window[name];
}
document.body.appendChild(script);
});
}
var data = jsonp("https://www.google.com");
data.then((res) => {
console.log(res);
});