Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

223
Vistas
cómo usar llamadas jQuery ajax con node.js

Esto es similar a Transmitir datos con Node.js , pero no creo que esa pregunta haya sido respondida lo suficiente.

Estoy tratando de usar una llamada jQuery ajax (get, load, getJSON) para transferir datos entre una página y un servidor node.js. Puedo presionar la dirección desde mi navegador y ver "¡Hola mundo!", pero cuando intento esto desde mi página, falla y muestra que no recibo respuesta. Configuré una página de prueba simple y un ejemplo de hola mundo para probar esto:

 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>get test</title> </head> <body> <h1>Get Test</h1> <div id="test"></div> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js"></script> <script> $(document).ready(function() { //alert($('h1').length); $('#test').load('http://192.168.1.103:8124/'); //$.get('http://192.168.1.103:8124/', function(data) { // alert(data); //}); }); </script> </body> </html>

y

 var http = require('http'); http.createServer(function (req, res) { console.log('request received'); res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(8124);
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Si su página de prueba simple se encuentra en otro protocolo/dominio/puerto que su ejemplo de hello world node.js, está realizando solicitudes entre dominios y violando la misma política de origen, por lo tanto, sus llamadas jQuery ajax (obtener y cargar) están fallando en silencio. Para que este dominio cruzado funcione, debe usar el formato basado en JSONP . Por ejemplo código node.js:

 var http = require('http'); http.createServer(function (req, res) { console.log('request received'); res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('_testcb(\'{"message": "Hello world!"}\')'); }).listen(8124);

y el lado del cliente JavaScript/jQuery:

 $(document).ready(function() { $.ajax({ url: 'http://192.168.1.103:8124/', dataType: "jsonp", jsonpCallback: "_testcb", cache: false, timeout: 5000, success: function(data) { $("#test").append(data); }, error: function(jqXHR, textStatus, errorThrown) { alert('error ' + textStatus + " " + errorThrown); } }); });

También hay otras formas de hacer que esto funcione, por ejemplo, configurando un proxy inverso o creando su aplicación web completamente con un marco como express .

over 4 years ago · Santiago Trujillo Denunciar

0

Gracias a yojimbo por su respuesta. Para agregar a su muestra, quería usar el método jquery $.getJSON que coloca una devolución de llamada aleatoria en la cadena de consulta, así que también quería analizar eso en Node.js. También quería devolver un objeto y usar la función stringify.

Este es mi código del lado del cliente.

 $.getJSON("http://localhost:8124/dummy?action=dostuff&callback=?", function(data){ alert(data); }, function(jqXHR, textStatus, errorThrown) { alert('error ' + textStatus + " " + errorThrown); });

Este es mi lado del servidor Node.js

 var http = require('http'); var querystring = require('querystring'); var url = require('url'); http.createServer(function (req, res) { //grab the callback from the query string var pquery = querystring.parse(url.parse(req.url).query); var callback = (pquery.callback ? pquery.callback : ''); //we probably want to send an object back in response to the request var returnObject = {message: "Hello World!"}; var returnObjectString = JSON.stringify(returnObject); //push back the response including the callback shenanigans res.writeHead(200, {'Content-Type': 'text/plain'}); res.end(callback + '(\'' + returnObjectString + '\')'); }).listen(8124);
over 4 years ago · Santiago Trujillo Denunciar

0

Supongo que su página html está alojada en un puerto diferente. La política del mismo origenrequiere en la mayoría de los navegadores que el archivo cargado esté en el mismo puerto que el archivo de carga.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda