0

私は非常に基本的なjqm/phonegapアプリを持っています

これが私のhtmlです

<html>
<head>
<title>jQuery Mobile Web App</title>
<link href="jquery-mobile/jquery.mobile-1.0.min.css" rel="stylesheet" type="text/css"/>
<link href="style.css" rel="stylesheet" type="text/css">
<script src="jquery-mobile/jquery-1.6.4.min.js" type="text/javascript"></script>
<script src="jquery-mobile/jquery.mobile-1.0.min.js" type="text/javascript"></script>

</head>
<body >
<div data-role="page" id="home"  >
  <div data-role="header">
    <h1>p</h1>
  </div>
  <div data-role="content" style="text-align:right" id="c1">


  </div>
  </div>
</div>
</div>

これがhtmlコードの本文に配置されている私のjsコードです

 <script>

    function get_news_list(id , link_ , refresh_ ){

        jQuery.support.cors = true;

        $.ajax({
        url :  link_ ,  
        success:function(data){
            $('#c1').html(data);

                        } ,
        error : function(data) {

            alert(data.toSource);

            }
        });
    }

  get_news_list('latest' , 'http://pnup.ir/?feed=json' , refresh_);

    </script>

ウェブページとして実行すると、

Firefoxの場合はこのアラート

function toSource() {
    [native code]
}

クロームで

  undefined 

これは大丈夫だと思いますが、これはクロスドメインのajaxリクエストであり、Webブラウザーでは失敗します(Firebugではステータスは大丈夫です200ですが、応答として何も返されません)が、Androidデバイスでテストすると同じundefined。クロスドメインのajaxリクエストは、Androidデバイスでアプリとして実行すると問題ないと思いましたか?

私は何かが足りないのですか?jsonpを使用する必要がありますか?そのワードプレスのウェブサイトとjsonフィードプラグインでそのフィードはjsonで利用可能ですが、jsonpフィードを取得することは悪夢になります...少なくとも私は方法がわかりません!

4

1 に答える 1

1

最近、phonegap + jquerymobile プロジェクトの 1 つに jsonp を実装しました。同じ問題がありましたが、サービスに asp.net を使用しました

以下のようにサービスを呼び出すと、私にとってはうまくいきました。URLの最後に

$.ajax({        
        url : link_+'?fnCallBack=?',
        contentType : "application/json; charset=utf-8",
        dataType : "json",
        jsonp : 'json',
        cache : false,
        success : function(result) {
            if (result != 'Error') {
                var valX = JSON.stringify(result);
                valX = JSON.parse(valX);
            } else {
                navigator.notification.alert("An error occured, Please try later");
            }
        }
    });

サーバー側では、json 応答を送信するときに、このように fnCallBack を追加するだけです

        string jsoncallback = context.Request["fnCallBack"];
        context.Response.Write(string.Format("{0}({1})", jsoncallback,jsonData));

このようにしてクロスドメインの問題を解決したので、これから手がかりを得られることを願っています

于 2013-03-19T04:48:42.167 に答える