3

Andriod4.12をターゲットにしたPhonegap+Jqueryを使用してHTMLページを作成しました。

私のビジネス要件は、cordova.jsのカメラAPIを使用して写真を撮り、このキャプチャした写真をASMXWebサービスに投稿することです。

問題:Cordova.jsへの参照を追加してアプリケーションを実行すると、LogCatに「UncaughtReferenceError:$ is not defined」というエラーが表示されますが、cordova.jsへの参照を削除すると、すべてが正常に機能し、投稿できます。 Webサービスへのデータ。

参照用にコードを添付しています。

<!DOCTYPE html>
<html>  
<head>    
<title>Capture Photo</title>   
<script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
<script type="text/javascript" charset="utf-8" src="jquery.js"></script> 

<script type="text/javascript">

 var varType;
 var varUrl;
 var varData;
 var varContentType;
 var varDataType;
 var varProcessData;

  function InsertDetails() {
        alert('Inserting Details');
        varType = "POST";
        varUrl = "http://mobile.comp.com/service/userservice.asmx/InsertDetails";
        varContentType = "application/json; charset=utf-8";
        varDataType = "json";
        varProcessData = true;

        var uname = document.getElementById('txtname');
        var pwd = document.getElementById('txtpwd');
        CallService(uname.value, pwd.value);

        return true;
    }

    //Generic function to call AXMX/WCF  Service        
    function CallService(u, p) {
        $.ajax({ type: varType, url: varUrl, data: '{"username":"' + u + '","password":"' + p + '"}', contentType: varContentType, dataType: varDataType, processdata: varProcessData, success: function (msg) { ServiceSucceeded(msg); }, error: ServiceFailed });
    }

    function ServiceSucceeded(result) {

        var myObject = eval('(' + result.d + ')');
        alert(myObject);
    }
    function ServiceFailed(result) {
        alert('Service call failed: ' + result.status + '' + result.statusText);
        varType = null; varUrl = null; varData = null; varContentType = null; varDataType = null; varProcessData = null;
    } 
</script>
</head>
<body>
<input type=text id=txtname value=John />
<input type=text id=txtpwd value=Doe /> 
<input type="button" id="btnSearch" onclick="InsertDetails();" style="cursor: pointer;
    margin-top: 8px; vertical-align: top" value="Insert Details" />

     <button id=btn1>Capture Photo</button> 

</body>
</html>

これで私を助けてください。

4

2 に答える 2

3

同様の問題を検索すると、考えられる答えがいくつか示されます。

1)CDNからではなくローカルでjQueryをロードします。あなたはすでにこれをしているようですが、同様の問題を抱えている他の人のためにそれについて言及します。

android3.2を搭載したasusタブレットでjQueryの$が見つかりません

2)クロスドメインリクエストを許可するようにjQueryに指示します。以下のリンクのセクション「$.support.cors」と「$。mobile.allowCrossDomainPages」をご覧ください。

https://demos.jquerymobile.com/1.2.0/docs/pages/phonegap.html

3)jQueryにうまく再生するように指示します。cordova.jsが$も使用したい別のJSライブラリを使用している可能性があります。最初にcordovaをロードしているので、他のJSライブラリはjQueryができる前に$を要求しています。

http://docs.jquery.com/Using_jQuery_with_Other_Libraries

于 2012-11-20T19:38:48.393 に答える
1

ニックに助けてくれてありがとう。3番目のリンクが役立ちました

最後に私のコードは機能しました

次のコード行を追加して、魔法をかけました。

jQuery.noConflict();

その後、JQueryが認識されました。javascriptsの適切な順序に従うようにしてください。そうしないと、コードが機能しません。

jsファイルを参照した順序:

  1. JQuery.jsへの参照(プロジェクトにローカルに追加)
  2. jQuery.noConflict();
  3. サービス呼び出し用のJavascriptコード
  4. Cordova.jsへの参照
  5. コルドバカメラインタラクションコード
于 2012-11-22T07:41:39.590 に答える