0

xml リストを作成する php ファイルがあります。ブラウザで表示すると、次のようになります。

<results>
 <login>
  <name>Mick Smith</name>
  <pass>Micks Password</pass>
 </login>
 <login>
  <name>John Brown</name>
  <pass>Johns Password</pass>
</login>
</results>

Jquery で ajax を学習しようとしていて、次のスクリプトがあります。問題は、colsole ログに結果が表示されることを期待していましたが、「返された」以外は何も返されません。最終的に xml を作成するファイルにデータを渡したいので、ajax ステートメントに DATA を追加しました。

    $.ajax({
    type: "POST",
    url: "pgGeneral_login/validate.php",
    data: { user:user, pass:pass },
    dataType: "xml",
    success: loginval()       });  

  function loginval(data){
        console.log("Returned")

        $(data).find('login').each(function(){

        name = $(this).find('name').text();
        pass = $(this).find('pass').text();
        console.log("Name :" + name) 
        console.log("Pass :" + pass) 
        }); // find loop
    }
4

2 に答える 2

3

問題はこれです:

success: loginval()       });
//               ^^ remove

関数を success プロパティに割り当てるときは、括弧を使用しています。これにより、成功イベントが発生したときではなく、割り当て時に関数が実行されます。コードで実際に起こることは、loginval()が実行され、その戻り値が に割り当てられることsuccessです。かっこを削除して、次のようにします。

success: loginval       });
于 2013-02-16T12:11:18.603 に答える
0

さらに、この行の場合:

data: { user:user, pass:pass },

これらの2つの変数userを事前定義して、このajax呼び出しの前に渡すかどうかはわかりません。

そして、loginval関数では、変数をローカルにする方がよいでしょう。

name = $(this).find('name').text();
pass = $(this).find('pass').text();

var name = $(this).find('name').text();
var pass = $(this).find('pass').text();
于 2013-02-16T12:19:28.590 に答える