1

変換しようとしているCodeIgniterWebアプリがあります(更新:JQM UIをオーバーレイしようとしています)[jQueryMobileアプリに]。CodeIgniterコントローラーにリンクするタブの設定に問題があります。

これは私の「header.php」ビューのコードです-内<div data-role="page"></div>。これはメインコントローラーによって呼び出され、正常に動作します。ここで、問題:受信トレイと呼ばれる新しいコントローラーを呼び出すようにjQueryMobileのナビゲーションバータブを設定しようとしています。

<div data-role="footer" data-position="fixed">
  <div data-role="navbar">
    <ul>
      <li>
          <a href='<?php echo base_url()."inbox"?>' data-ajax="false">Inbox</a>
      </li>
    </ul>
  </div>
</div>

jQuery Mobileがない場合、リンクは正常に機能し、受信トレイCodeIgniterコントローラーをトリガーしますが、header.phpビューでJQMを有効にすると、[受信トレイ]タブをクリックすると「404NotFound」ページが表示されます。

更新-htmlヘッドのこのjQueryコード:

<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
<link rel="stylesheet" href="<?php echo base_url(); ?>assets/all-mobile.css" type="text/css" media="screen"/>

<link rel="icon" href="<?php echo base_url(); ?>assets/images/logo.png" />
<link rel="apple-touch-icon-precomposed" href="<?php echo base_url(); ?>assets/images/logo.png" />

<meta name="apple-mobile-web-app-capable" content="yes" />

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>

更新2:このコードをt.jsに挿入して、自動ajaxリンクを削除した場合:

$(document).bind("mobileinit", function(){
    $.mobile.ajaxEnabled = false;
});

そして私の新しいheadhtmlコードは次のようになりました:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="<?php echo base_url(); ?>assets/js/t.js"></script>

<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>

…jQueryMobileは読み込まれますが、「受信トレイ」リンクはCIによって404ページを生成します。

更新3:ローカルなものに問題があると判断しました。CIコードと新しいjQueryMobileスクリプトをWebサーバーにアップロードすると、inbox.phpコントローラーにリンクしているタブ実際に機能します。MAMPを使用しているローカルマシンで機能しない理由を誰かが知っていますか?現在、この構成ではローカルで開発およびテストできないようです。修正はありますか?

jquerymobile.com/demos/1.2.0/docs/api/globalconfig.htmlでallowCrossDomainPagesを見て、$。mobile.allowCrossDomainPages=true;を追加しました。jQueryの初期化には適用されますが、MAMPを実行しているローカルホストサーバーがinbox.phpコントローラーを提供するのに役立ちませんでした。それでも404です。

更新4:問題は解決しました。隠しファイル.htaccessに問題があったことが判明しました。URIを書き換えるために、「RewriteBase /myapp-mobile/」が含まれています。このディレクトリをhtdocsの下の新しいフォルダに移動すると、このディレクトリが正しくなくなりました。

4

1 に答える 1

1

ドキュメントによると:

jQuery Mobileの自動初期化の操作-jQueryやjQueryUIなどの他のjQueryプロジェクトとは異なり、jQuery Mobileは、ロードされるとすぐに (document.readyイベントが発生するずっと前に)多くのマークアップ拡張機能を自動的に適用します。

と...

ajaxEnabled(ブール値、デフォルト:true): jQuery Mobileは、可能な場合、 Ajaxを介したリンククリックとフォーム送信を自動的に処理します。falseの場合、URLハッシュリスニングも無効になり、URLは通常のhttpリクエストとして読み込まれます。

まだ持っていない関数false内でそのオプションを特に設定しない限り、すべてのリンクをajaxリクエストとして扱うように見えます。mobileinit

以下のこの関数を使用して、jQuerymobileにすべてのリンクを通常のhttpリクエストとして処理させます。

$(document).bind('mobileinit', function(){
    $.mobile.ajaxEnabled = false;
    // other options to enable on intialization
});
于 2012-12-08T19:29:37.240 に答える