1

私は今日かなり長い間グーグルをしていて、私の問題を解決するために何も見つけられなかったので、誰かが私を助けることができるかどうか疑問に思いました。私が見たWebサイトでは、JSONが返されるためだと述べていましたが、1つだけでなく、すべてのフィールドで取得しています。しかし、私が理解できないのは、なぜ最初の2つのフィールドもそうではないのですか?したがって、私の混乱

JqueryとAJAXを使用してログインフォームを送信しています(これは知っています)。

最初の2つのフィールド(電子メールとパス)は送信し、期待どおりに戻ります。テストの目的で、私は単にそれらの値をで返します<span id="loginresponse"></span>

CSRFを防ぐために、「t」と呼ばれる3番目のフィールドがあります(これが問題であるかどうかを確認するために、ランダムな名前を付けました。それでも[object Object]が返されます)。<input type="hidden" name="t" value="RandomToken"/> フォームを送信すると、「Email、Pass、RandomToken」のフィールドに入力した内容が返されることを期待しています。代わりに、Email、Pass、[ObjectObject]を取得します。

これが私のDoLogin関数で、フォームが送信されたときに呼び出されます。

function DoLogin()
    {
        var Email = $("#email").val();
        var Pass = $("#pass").val();
        var LoginResponse = $("#loginresponse");
        var T = $("#t");
        var EmailPlaceholder="Email address";var PassPlaceholder="Your password here";
        $.get('path/to/login_ajax.php?email='+Email+'&pass='+Pass+'&t='+T, function(data)
        {
          $('#loginresponse').html(data);
        });
        /*if(Email != EmailPlaceholder && Pass != PassPlaceholder && Email != "" && Email != " " && Pass !="" && Pass != " ")
        {

        }*/
    }

これが私のHTMLフォームです:

<form action="javascript:DoLogin();" method="post"><!--Also tried changing method to GET, still got the same problem --> 
<input  id="email" class="inputemail" type="text" name="email" size="40" value="Email     address" onclick="$(this).val('');"/><span>Your email</span><br/>
<input id="pass" class="inputpassword" type="password" name="pass" size="40" value="Your password here" onclick="$(this).val('');"/><span>Your password</span><br/>
<input id="t" type="hidden" name="t" value="RandomToken"/>
<input class="indexsubmit" type="submit" value="Login"/>
</form>
<span id="loginresponse"></span>

そして最後に、login_ajax.php

<?php
echo $_GET['email'].$_GET['pass'].$_GET['t'];
?>

上記のように-私はJqueryとAJAXを知っているので、結果をエコーし​​ているだけなので、すべてのフィールドが期待どおりに値を返しているかどうかを確認したいのですが、1つはそうではありません...トークンフィールド。

4

2 に答える 2

2

要素の値ではなくT、入力要素のオブジェクトをGETリクエストのクエリ文字列にチェーンします。

この行を変更する必要があります

var T = $("#t"); // The object of the input element

これに

var T = $("#t").val(); // The value of the input element
于 2013-02-07T14:09:02.093 に答える
2

多分あなたが欲しいものは:

var T = $("#t").val();
于 2013-02-07T14:10:11.157 に答える