2012-04-17 10 views
0

私は、JquerMobileフレームワークを使用してサーバー側からJSONオブジェクトとしていくつかの値を取得するためにajax呼び出しを使用しようとしています。これはデスクトップのChromeブラウザで問題なく動作します。これは携帯電話のブラウザでは機能しません。私がここで間違っていることを指摘する助けがあれば助けになります。以下のスクリプト。JqueryMobile、AJAX、JSON

$("#showmore").live("click", function(event, param1){ 
    event.preventDefault(); 
    getUrl = $(this).attr('href'); 
    $.post(getUrl, function(data){ 
     $('#sname').html(data.name); 
    },"json"); 
    return false; 
}); 

コールバックデータをアラートボックスに表示すると、現在のページのHTMLコンテンツが取得されます。デスクトップブラウザでは、適切な値を得ています。ご協力ありがとうございました!

答えて

0

私はこの同じ問題を抱えていました。私はiPadでこの問題を経験しただけで、修正を見つけることができませんでした。私は回避策を見つけることができた。

href属性に頼る代わりに、data-hrefのようにdata-attributeを使用してください。 data-href属性をhref属性と同じに設定し、jQueryコードのdata-href属性を参照してください。

モバイルサファリの一部のバージョンで正しいhref属性の値を取得できないバグがあるようです。同じページにAJAXリクエストをロードする理由は、JSを経由して返されたhrefの値が親ドキュメントを参照するため空白になっているためです。

JS -

$("#showmore").live("click", function(event, param1){ 
    var getUrl = $(this).attr('data-href');//no need to create a global variable, so use the `var` keyword here 
    $.post(getUrl, function(data){ 
     $('#sname').html(data.name); 
    },"json"); 
    return false; 
}); 

HTML -

<a data-href="foobar.html" href="foobar.html" id="showmore">SHOW MORE!</a> 

注jQueryのイベントハンドラでreturn falseは、機能的に同時にevent.preventDefault()event.stopPropagation()を呼び出すのと同じであること。

+0

+ジャスパー。ありがとうございました!それが問題でした。 attr( 'href')が#を返したようです。それは、私が投稿に使っているhrefを印刷したり警告したりするために私を攻撃しなかった!私はdata-hrefを使用し、それが問題を解決しました。 – PackedUp