SORU
21 Mart 2011, PAZARTESİ


nasıl node.js jQuery ile ajax çağrıları kullanmak için

Bu Stream data with Node.js ama bu soruya yeterince cevap hissetmiyorum benzer.

JQuery ajax çağrısı (olsun, yük, getJSON) bir sayfa ve node.js bir sunucu arasında veri aktarımı için kullanmaya çalışıyorum. Benim tarayıcıdan Adres vurdu ve 'Merhaba Dünya!", ama benim sayfadan bu çalıştığınızda, başarısız olur ve hiçbir tepki döndüğüm gösteriyor. Basit bir test ve bu test için örnek sayfa Merhaba Dünya: Kur

<!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>

ve

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);

CEVAP
21 Mart 2011, PAZARTESİ


Eğer basit bir test sayfasında yer alan diğer protokol/etki alanı/port daha Merhaba Dünya node.js örnek yapıyorsun etki alanları arası istekleri ve ihlal same origin policy Bu nedenle jQuery ajax çağrıları (ve yük) başarısız sessizce. Bu çalışma çapraz etki alanı JSONP temel biçimi kullanmalısınız. Örneğin node.js kod:

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);

ve istemci tarafı/jQuery JavaScript:

$(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);
        }
    });
});

Ayrıca bu çalışma, örneğin reverse proxy kurarak veya web uygulama tamamen express gibi çerçeve ile inşa etmek için nasıl başka yolları da var.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Film Riot

    Film Riot

    16 NİSAN 2006
  • gadgetgal38

    gadgetgal38

    9 HAZİRAN 2009
  • hanksranger

    hanksranger

    6 EKİM 2009