1

phonegap でアプリケーションを書きます サーバーサイド nodejs で書きます

exports.login = function(request, response) {
    var keys = Object.keys(request.query);
    request.body= JSON.parse(keys[1]);
    Accounts.findOne({
        name : request.body.name
    }, function(err, docs) {
        if (!docs) {
            response.json('{"error": "user-not-found"}');
        } else {
            console.log("docs: ", docs);
            Accounts.validatePassword(request.body.password, docs['hashedPass'], docs['salt'], function(error, res) {
                if (error) {
                    response.json(error);
                }
                if (res) {
                    generateToken(request.body.name, request.body.device, function(res) {
                        if (res) {
                            response.json('{"token": "' + res + '"}');
                        } else {
                            response.json('{"error": "cant-create-token"}');
                        }
                    });
                } else {
                    response.json('{"error": "invalid-password"}');
                }
            });

        }
    })
}

Phonegap: ログインする関数を書きます

function LoginUser(info)
{
    var varUrl=server+"/auth/login";
    $.ajax({
            url:varUrl,
            type:"GET",
            contentType:"application/json",
            headers: {
                            Accept:"application/json",
                            "Access-Control-Allow-Origin": "*"
                        },              
            data:info,              
            dataType:"jsonp", 
            success:function(data)
                {
                    console.log("HERE");
                    console.log(data);                      
                },
            error: function(err){
                console.log(err);
            }


    });
}

そして、私はそれがこのようになることを要求しますhttp://localhost:3000/auth/login?callback=jQuery161014894121675752103_1361459462241&{%22name%22:%22fdfdfd%22,%22password%22:%22fdfdfdfd%22}&_=1361459615743

そして、クロムの開発者のタブネットワークの応答を見ると、"{\"error\": \"user-not-found\"}"

function LoginUser(info)しかし、コンソールで印刷されるため、上記の取得方法でこの応答をキャッチできませんerror: function(err){ console.log(err); }

どうしてか分かりません。手伝って頂けますか。

4

1 に答える 1

1

サーバー側では、コールバックを使用する必要があり、jsonp ファイルの応答で行う必要があります。

jQuery161014894121675752103_1361459462241({"error": "user-not-found"})

関数名は、jsonp リクエストのコールバック変数に由来します。jsonp リクエストは、js を (基本的に) 実行できるスクリプト タグをサイトに「含める」だけで発生します。

于 2013-02-21T15:22:40.177 に答える