0

を使用してフォームを投稿しようとしていdojo.xhrPostます。以下のコードは chrome では問題なく動作しますが、Firefox ではまったく動作しません。うまくいかないと言うと、ページが再度リロードされ、何も起こらないことがわかります。使用しようとしましdojo.stopEvent(event);たが、Firefox では動作しないようです。

私の間違いの可能性を教えてください。問題は xhrPost よりもフォームにあると思います。

HTML は次のようになります。

<div data-dojo-type="dijit/form/Form" data-dojo-id="myform" id="loginform" 
encType="multipart/form-data" action="" method="post">
<script type="dojo/method" data-dojo-event="onSubmit">
    if(this.validate()){
        senddata();  //calling the javascript function
    }else{
        alert('Form contains invalid data.  Please correct first');
        return false;
    }
    return true;
 </script>
  <table cellspacing="10">
  <tr>
  <td><label for="name">Username:</label></td>
  <td><input type="text" id="username" name="username" 
  required="true" placeholder="Your UserName" data-dojo-
  type="dijit.form.ValidationTextBox"/></td>
  </tr>
  <tr>
  <td><label for="password">Password:</label></td>
  <td><input type="password" id="password" name="password"       
  required="true" placeholder="Your Password" 
  data-dojotype="dijit.form.ValidationTextBox"/></td>
  </tr>
 </table>
 <div id="response" style="float: right"></div>
 <button data-dojo-type="dijit.form.Button" type="submit" name="submitButton" 
    value="Submit" style="float: right;">Submit</button>
 </div>

私のJavascriptコードは以下の通りです:

function senddata(){
dojo.stopEvent(event);

obj = {};
obj.user_name =dijit.byId("username").get("value");
obj.password =dijit.byId("password").get("value");

var xhrArgs = {
          url: "./script/php/validatelogin.php",
          postData: obj,
          handleAs: "json",
          load: function(data){
              //alert('success');
              if(data.success==true){
                  window.location = data.message;
                  dojo.byId("response").innerHTML = "Form posted.";  
              }else{
                  dojo.byId("response").innerHTML = "login Failed";
              }

          },
          error: function(error){
             console.log("error occured!!!");
             dojo.byId("response").innerHTML = "Failed to Post the Form..";
                }
          };


//alert('starting');
 var deferred = dojo.xhrPost(xhrArgs);
 //alert('done');

 return false;

}
4

1 に答える 1

0

まず、data-dojo-typeをパス形式に変更します。例えば:dijit/form/ValidationTextBox

次に、 のパスワード フィールドの入力ミスを修正しますdata-dojo-type。を入力しましたが、'dojo' と 'type' の間の b= がdata-dojotypeありません-

dojo.byId() & dijit.byId() に関する詳細情報。

結果は次のとおりです。

    <div data-dojo-type="dijit/form/Form" data-dojo-id="myform" id="loginform" encType="multipart/form-data" action="" method="post">
    <script type="dojo/method" data-dojo-event="onSubmit">
        if(this.validate()){
            senddata();  //calling the javascript function
        }else{
            alert('Form contains invalid data.  Please correct first');
            return false;
        }
        return true;
    </script>

    <table cellspacing="10">
        <tr>
            <td><label for="name">Username:</label></td>
            <td><input type="text" id="username" name="username" required="true" placeholder="Your UserName" data-dojo-type="dijit/form/ValidationTextBox" /></td>
        </tr>
        <tr>
            <td><label for="password">Password:</label></td>
            <td><input type="password" id="password" name="password" required="true" placeholder="Your Password" data-dojo-type="dijit/form/ValidationTextBox" /></td>
        </tr>
    </table>
    <div id="response" style="float: right"></div>
    <button data-dojo-type="dijit/form/Button" type="submit" name="submitButton" value="Submit" style="float: right;">Submit</button>
</div>

<script>
function senddata(){
    dojo.stopEvent(event);

    obj = {};
    obj.user_name =dijit.byId("username").get("value");
    obj.password =dijit.byId("password").get("value");

    var xhrArgs = {
        url: "./script/php/validatelogin.php",
        postData: obj,
        handleAs: "json",
        load: function(data){
            //alert('success');
            if(data.success==true){
                window.location = data.message;
                dojo.byId("response").innerHTML = "Form posted.";  
            }else{
                dojo.byId("response").innerHTML = "login Failed";
            }
        },
        error: function(error){
            console.log("error occured!!!");
            dojo.byId("response").innerHTML = "Failed to Post the Form..";
        }
    };
    //alert('starting');
    var deferred = dojo.xhrPost(xhrArgs);
    //alert('done');
    return false;
}
</script>
于 2013-08-01T07:06:46.627 に答える