phonegapはローカルのhtmlファイルに基づいているので、リモートサーバーのベースURLについてはわかりません。 jqueryを使ってajaxリクエストのベースURLを設定する最も良い方法は何ですか?誰かがサンプルへのリンクを提供できますか?Jqueryを使用してajaxリクエストのベースURLを設定する最も良い方法は何ですか?
現在、私はjquery ajaxプレフィルタを使用することについて考えています。
phonegapはローカルのhtmlファイルに基づいているので、リモートサーバーのベースURLについてはわかりません。 jqueryを使ってajaxリクエストのベースURLを設定する最も良い方法は何ですか?誰かがサンプルへのリンクを提供できますか?Jqueryを使用してajaxリクエストのベースURLを設定する最も良い方法は何ですか?
現在、私はjquery ajaxプレフィルタを使用することについて考えています。
私はこの問題に取り組んだとき、タグにデータ要素としてその情報を入れました。その後、
<body data-base="http://mydomain.com"> ...
そして、与えられた要求のために適切なURLを構築中であることを使用:
//If pathOrURL is a relative path (e.g. /users/1), then we return a qualified
// URL, such as http://mydomain.com/users/1
// otherwise, we return the URL as is
var qualifyURL = function(pathOrURL) {
if (!(new RegExp('^(http(s)?[:]//)','i')).test(pathOrURL)) {
return $(document.body).data('base') + pathOrURL;
}
return pathOrURL;
};
//Use this helper function when calling $.ajax
$.ajax({
url: qualifyURL(url), ... });
これは、PhoneGapの私の経験のために素晴らしい仕事。うまくいけば、これは役に立ちます。
これを行う意味的に正しい方法は<base>
タグを使用することです:
<head>
<base href="http://mydomain.com/">
</head>
を次に、このような値が取得(残念ながらjQuery.ajax()を自動的にこの値をピックアップしていません):
$('head base').attr('href');
要素参照:確立回答のhttp://www.w3.org/TR/html4/struct/links.html#edef-BASE
の両方が大きな欠点を持っています。リクエストを行うたびにURLをマッサージするために関数を呼び出さなければならないことは、余分なタイピングです。ページにベースタグを追加するとほとんどの時間がかかりますが、SVGで大量の作業を行っている場合は、いくつかの問題が発生します。ベースタグを使用せずにすべてのURLを一度に修正する簡単な解決法があります。
var baseUrl = 'http://my.hardcoded.url/';
$.ajaxSetup({
beforeSend: function(xhr, options) {
options.url = baseUrl + options.url;
}
})
これは答えの隠された宝石です。あなたが$ .ajaxの呼び出しを制御していないレガシーコードを扱っているのであれば大丈夫です。 – corbin
答えはかなり正解です.AJAX呼び出しがbeforeSendコールバックを定義する場合にはうまくいかない:( – sanjeev
本当です、このJavaScriptをアプリケーションのブートストラッププロセスの始めに置く必要があります – user393274
ありがとうございました。私たちのアプリケーションは、phonegapモードとブラウザモードでも動作します。だから私はURLの生成を変更し、追加のヘルパー関数を挿入したくない。 –
公正であるために、これは両方のブラウザとPhonegapで正常に動作します。それは単にあなたがpreFilterを使ってやろうとしていることを明示的に行うことです。 – ghayes
私が持っていたファイルはすでにベースのhrefを頭で使っていました。だから私はこれと基本的なhrefの例に投票しました。もちろん、私はこの例から$(document.body).data( 'base')を取り出しただけです。ありがとう! – Bretticus