1

私のコードでAndroidアプリ用のPhoneGapプラグインを試しています。私のHTMLStrict4コードは次のとおりです。

コード:

<!DOCTYPE html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<script type="text/javascript" charset="utf-8" src="phonegap-1.0.0.js"></script>
<script type="text/javascript" charset="utf-8" src="system.js"></script>
<script type="text/javascript">

var uname;

function validate(){    

    //uname = document.forms[0].elements[0].value;
    //var pass = document.forms[0].elements[1].value;

    uname=document.getElementById("i1").value;
    var pass=document.getElementById("i2").value;

    alert("Uname: "+uname+"\r\nPass: "+pass);

    if(!uname || uname === "" || !pass || pass === ""){

        alert("User Credentials are incorrect");

    }
    else{           

        //Make a webservice call
          post_data(uname,pass,postDataCB);     


    }

}

function postDataCB(retval){

    alert("In postDataCB()\r\nuname: "+uname);

}



</script>
</head>
<body>
   <form>
      User name: <input type="text" id="i1" name="username" value="GEO02-OTPUAT" /><br />
      Password:&nbsp;&nbsp;<input type="password" id="i2" name="pwd" value="aaa111" /><br />
      <button onclick="javascript:validate()">Submit</button><br />
  </form>

私のHTMLには、というグローバル変数がありunameます。この変数はコールバック関数postDataCB()で使用されますが、未定義として提供されます。(私は警告して見ました)私が観察したのは<form /> 、HTMLコードから要素を削除したときに機能しているようです。

だから、誰でもそれが起こっている理由とこの問題を解決する方法を教えてもらえますか?

post_dataのコード:

public PluginResult post_data(JSONArray funcargs, String jscallbackid){

    SuccessCallBack=funcargs.getString(0);
    FailureCallBack=funcargs.getString(1);
        uname= funcargs.getString(2);
    passw = funcargs.getString(3);      


    conn = new URL("http://www.subratlogin.com/login").openConnection();
    conn.setDoOutput(true);


    data += URLEncoder.encode(uname, "UTF-8") + "=" + URLEncoder.encode(passw, "UTF-8") + "&";

    //remove the unwanted & at the end of the string
    data = data.substring(0,data.length()-1);  

    ro = new OutputStreamWriter(conn.getOutputStream());
    ro.write(data);

    //Close the connection
    ro.close(); 

    try{

        rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));

        while ((line = rd.readLine()) != null)
        {
           sb.append(line);
        }

    //Close the connection
       rd.close();

    } catch (IOException e) {
        SendJS = "javascript:" + FailureCallBack + "('" + e.getMessage() + "')"; 
        sendJavascript(SendJS);
        return null;
    }

    SendJS = "javascript:" + SuccessCallBack + "('" + JSONObject.quote(sb.toString()); 

    if(jObj != null)
        SendJS += "','" +  jObj + "')";
    else if(StringParam != null)
        SendJS += "','" + StringParam + "')";
    else
        SendJS += "')";

    sendJavascript(SendJS);
    return null;    
 }

このタイプの質問をすることをお勧めします。

4

1 に答える 1

-1

プラグインの仕様にまったく準拠しておらず、devicereadyのリスナーを設定する場所が見つかりません。

http://wiki.phonegap.com/w/page/36753494/How%20to%20Create%20a%20PhoneGap%20Plugin%20for%20Android

于 2012-07-11T12:09:10.097 に答える