2011-08-10 17 views
0

Ajaxを使用して、自分が作業しているサイトのユーザーのパスワードを変更しようとする際に、奇妙な問題が発生しています。基本的には、ユーザー名、古いパスワード、新しいパスワードを2回入力できるフォームがあります。そこからJQueryが引き継ぎ、Ajaxリクエストを行います(私は同じ結果を持つ.postと.getをPHPページに試みました)。 PHPページは、基本的なエラーチェックを行い(すべてのフィールドが満たされていること、新しいパスワードが一致すること、新しいパスワードがすべての複雑さの要件を満たすことを確認する)、simplexml_load_file()を使用して、Webサービスリクエストはurlencoded getパラメータを持つURL経由であり、XMLを返します)、実際にユーザのパスワードが変更されます。Ajaxを使用してユーザーのパスワードを変更する際の問題

複雑さの要件を満たしていないパスワードでリクエストすると、Webサービスへのリクエストが呼び出されることはなく、Ajaxリクエストはうまく動作します。フォームフィールドがないリクエストを作成している間、同じことが起こります。

getパラメータを手動で入力してPHPページに直接アクセスしてリクエストを行う際、すべてが計画どおりに機能します。

この問題は、Ajaxを使用して良好なパスワードですべてのフィールドを入力しようとすると発生します。私は、次のエラーが表示されます。ここ

uncaught exception: [Exception... "Could not convert JavaScript argument arg 0 [nsIDOMDocumentFragment.appendChild]" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS frame :: path-to/jquery-1.6.2.min.js :: <TOP_LEVEL> :: line 18" data: no] 

は私のjavascriptです:

function makePasswordRequest() { 
email = $("#email").val(); 
currentPassword = $("#currentPassword").val(); 
newPassword = $("#newPassword").val(); 
newPasswordRetype = $("#newPasswordRetype").val(); 
$.get("../changeUserPassword.php", { 
     "email": email, 
     "currentPassword": currentPassword, 
     "newPassword": newPassword, 
     "newPasswordRetype": newPasswordRetype 
    }, 
    function(data){ 
     if(data.PasswordChanged){ 
      $("#notificationArea").addClass("success"); 
     } 
     else{ 
      $("#notificationArea").addClass("failure"); 
     } 
     $("#notificationArea").html(data.MessageString); 
    }, "json"); 
}; 
$(document).ready(function(){ 
    $("#passwordChangeForm").submit(function(e){ 
     e.preventDefault(); 
     makePasswordRequest(); 
    }); 
}); 

任意のアイデア?

答えて

-1

[OK]を、人々を引用しなければならないようなものであると思います。この問題は、Webサービスが何らかのオブジェクト(文字列のみを含む)を返送していて、JavaScriptに直接アクセスしているときにJSONが正常に見えているのにJavaScriptが解析できなかったようです。私は各文字列のようなオブジェクトからインデックス0でデータをプルするコードを編集し、すべてが美しく動作しています。助けてくれてありがとう!

1

実際に私は、JSONオブジェクトの形式は名前と値の両方が、私は問題を解決した

get("../changeUserPassword.php", { 
     "email": "email", 
     "currentPassword": "currentPassword", 
     "newPassword": "newPassword", 
     "newPasswordRetype": "newPasswordRetype" 
    }, 
関連する問題