2011-04-07 6 views
2

私はモバイルデバイス(特にiPhoneとAndroid)を対象としたWebアプリケーションを構築しています。 ASP.NET MVCとJQueryを使ってビルドしています。私は1ページにカスケードドロップダウンを持っています。私は、最初のドロップダウンのchangeイベントに関数を追加し、AJAX呼び出しを行い、JSONレスポンスを使用して2番目のドロップダウンを設定します。これは私のデスクトップ上でうまく動作しますが、iPhoneやAndroidの携帯電話では機能しません。 2番目のドロップダウンは入力されません。変更機能に「アラート」を置き、イベントがトリガーされていることを確認しました。私はAJAXコールのコールバック関数に "alert"を置いたが、実行されなかったので、AJAXコールがサーバに当たっていないか、応答が電話で受信されていない。iPhoneとAndroidで動作しないJquery ajax投稿

jQueryのコードは次のとおりです。

$(function() { 
    $("#ProgramId").change(function() { 
     var programId = $("#ProgramId").attr("value"); 
     alert("Change event triggered"); // <- test only, does get executed when client is a phone bowser 
     var termId = $("#TermId").attr("value"); 
     $.post("/DealerHome/Terms", { "ProgramId": programId }, 
      function (data) { 
       alert("Ajax response received"); // <- test only, does NOT get executed when client is a phone bowser 
       $("#TermId").children().remove(); 
       $("#TermId").append('<option value="0">--select--</option>'); 
       $.each(data, function() { 
        if (termId == this.Value) { 
         $("#TermId").append('<option value="' + this.Value + '" selected >' + this.Text + '</option>'); 
        } else { 
         $("#TermId").append('<option value="' + this.Value + '" >' + this.Text + '</option>'); 
        } 
       }); 
      }); 
    }); 
}); 

私はiPhone上でJavaScriptコンソールをオンにしましたが、それはすべてのエラーを表示しません。モバイルデバイスの開発に新しいことは、私はどのようにこれをデバッグする必要がありますか分からない。デスクトップ上で、私はちょうどワイヤーで起こっていることを見るためにフィドラーを使用します。どんな助けもありがたいです。

乾杯

クレイグ

+0

さらに、私はサーバーがモバイルからajax呼び出しを受け取り、JSON応答を返すことを確認しました。そのため、応答を処理していないモバイルデバイスに問題があるようです。 – Craig

答えて

5

私はこの問題を解決してきたと私はちょうど他の人が同じ問題に遭遇した場合にそれを掲示しています。それは、私が嫌いなことをやっている私にとって、それはハードコーディングされた文字列です。この場合、違反行は、post関数のAJAX urlです。それはウェブサイトのルートにハードコードされていますが、展開されたとき(私がモバイルデバイスでそれをどのようにテストしていたか)、パスは変更されました。

SOこれを修正するために、私がして上にポストラインを交換しました:

$.post('@Url.Content("~/DealerHome/Terms")' , { "ProgramId": programId }, 

Url.Contentは正しい相対パスがURLに使用されることを保証します。

関連する問題