2

サーバーはすでにクライアントから文字列を受信できます。

クライアントに応答を返してもらい、それをテキストエリアに表示してもらいたいと考えています。

app.js:

var sys = require ('util'),
    url = require('url'),
    http = require('http'),
    qs = require('querystring');
var stringforfirefox = 'hi man!';
http.createServer(function (req, res) {  



    if(req.method=='POST') {
        var body='';
        req.on('data', function (data) {
            body +=data;
        });
        req.on('end',function(){

            var POST =  qs.parse(body);
            console.log(POST);
        });

    }
    else if(req.method=='GET') {
        var url_parts = url.parse(req.url,true);
        console.log(url_parts.query);

    }


}).listen(1337, "127.0.0.1");

テストには、ローカルホストの URL を使用します。後でそれはクロスドメインになります。ウェブサイトはこちら

index.html:

<!DOCTYPE html>
<html>
<head>

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js"></script>
    <script>



        document.onkeypress = function keypressed(e){

            if (e.keyCode == 112) {

                httpGet('http://localhost:1337/index77?title=message_for_server')  ;
            }


            if (e.keyCode == 113) {

                var xmlhttp;

                xmlhttp=new XMLHttpRequest();

                xmlhttp.onreadystatechange=function()
                {
                    if (xmlhttp.readyState==4 && xmlhttp.status==200)
                    {
                        document.getElementById("textarea1").innerHTML=xmlhttp.responseText;
                    }
                }
                xmlhttp.open("POST","http://localhost:1337/index77",true);
                xmlhttp.send("fname=Henry&lname=Ford");
            }
        }

        function httpGet(theUrl)
        {
            var xmlHttp = null;

            xmlHttp = new XMLHttpRequest();

            xmlHttp.open( "GET", theUrl, false );
            xmlHttp.send( "fname=Henry&lname=Ford" );

            alert( xmlHttp.responseText);
        }
    </script>



</head>
<body>

<form>
    <p>
        <textarea id="textarea1"  cols="25" rows="25" name="textfeld"></textarea>
           </p>
</form>
</body>
</html>

ここにあるこのコードを拡張したいと思います。

4

3 に答える 3

0

応答 (res) を送信する必要があります。

if(req.method=='POST') {
    var body='';
    req.on('data', function (data) {
        body +=data;
    });
    req.on('end',function(){
        res.send(200, "The request's body: " + body);
        var POST =  qs.parse(body);
        console.log(POST);
    });
于 2013-03-13T23:57:53.380 に答える
0

XMLHttpRequest()明らかなセキュリティ上の理由から、クロスドメインで情報を投稿または取得するために使用することはできません. 一部のブラウザーでは、ローカルホスト環境にいる間は機能する可能性がありますが、サイトが Web から起動されている場合、これは受け入れられません。

これを回避するには、AJAX 要求を同じドメインに送信し、サーバー側でクロスドメイン操作を処理する必要があります。

Google ニュース RSS フィードなどの JavaScript ツールは、このメソッドを使用してこれらのセキュリティ バリアを回避します。

于 2013-03-13T23:59:28.497 に答える
0

ここでは、クライアントとサーバー間の文字列の交換が完全に機能します。

app.js:

var sys = require ('util'),
    url = require('url'),
    http = require('http'),
    qs = require('querystring');
var stringforfirefox = 'hi man!';
http.createServer(function (req, res) {

    if(req.method=='GET') {

        res.statusCode = 200;


        var url_parts = url.parse(req.url,true);
        var query = url_parts.query["title"];
        console.log(query);

        stringforfirefox = 'your input:  '+query;

        res.end("__stringexchange(" + JSON.stringify( stringforfirefox) + ");");
    }


}).listen(1337, "127.0.0.1");

index.html:

<!DOCTYPE html>
<html>
<head>

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js"></script>
    <script>


        function __stringexchange(data) {

            document.getElementById('textarea1').value= data;}


        document.onkeypress = function keypressed(e){

            if (e.keyCode == 112) {
                var keyword =  document.getElementById('edit1').value   ;
                var script = document.createElement('script');
                script.src = 'http://localhost:1337/?title='+keyword;
                document.body.appendChild(script); // triggers a GET request
            }

        }



    </script>



</head>
<body>

<form>
    <input id="edit1" type="text" name="keyword"><br>
    <br>
    <textarea id="textarea1"  cols="25" rows="25" name="textfeld"></textarea>

</form>
</body>
</html>

(他の質問からのコードの組み合わせ。)

于 2013-03-14T14:19:36.173 に答える