2017-07-17 2 views
0

こんにちは私はapiを呼び出しています。私がする必要があるのは単純なもので、URLに引数をいくつか追加してjsonファイルを返します。ajax呼び出しのURLの最後のインスタンスを削除します。

私はそれが働いていますが、1つの小さな問題があります。私はURLの+AND+の最後のインスタンスを削除する必要があります。ここで

はjQueryのです:

var query = "https://api.myurl.com/search=" 
var and = "+AND+" 
var generalSearch = "x" + and; 
var dateRange = "y" + and; 
var ageRange = "z" + and; 

jQuery.ajax({ 
     type: "GET", 
     url: query + generalSearch + dateRange + ageRange", 
     success: function(data) 
     { 
} 

これが返されます。

https://api.myurl.com/search=x+AND+y+AND+z+AND+

を私は、URL有効であるし、APIを使用して作業するのではなく、道のためにinorderを+AND+セパレータを持っている必要があります私はそれを設定してそれを壊すURLの末尾に+AND+が含まれています。

ちょうどこのようなAJAX呼び出しのURLフィールドに+AND+を追加しないで、なぜあなたは不思議に思われることがあります。値のいずれかが空であるかのためイムがこれをやっていない理由がある

url: query + generalSearch + and + dateRange + and + ageRange"

またはnullの場合、URLに+AND+が配置されます。 「generalSearch」はその後、空の場合例えば、それは

https://api.myurl.com/search=+AND+y+AND+z

どれでも可能な方法は、任意の方法を使用して動的にその最後の+AND+を削除するに戻りますか?

ありがとうございます! .lastIndexOf()と組み合わせる

+0

+AND+の最後のインスタンスを削除しますか。?なぜageRangeにANDを追加するのですか –

+0

なぜ単純ではないのですか?var ageRange = "z" '? – Satpal

+0

これは私の完全なコードの非常に最小限のバージョンです。変数とたくさんの入力がありますので、どの変数が最後に来るかを知ることは不可能です。 –

答えて

1

てみ使用.substring()は、これはあなたが正しいクライアント側でURLを生成している

var s = "https://api.myurl.com/search=x+AND+y+AND+z+AND+"; 
 

 
s = s.substring(0, s.lastIndexOf("+AND+")); 
 

 
console.log(s)

+0

なぜ単純ではないのですか?var ageRange = "z" '? – Satpal

+2

私は「危険な」と仮定していることを知っていますが、「と」を追加する理由があると思います。 –

+0

これは私の完全なコードの非常に最小限のバージョンです。変数とたくさんの入力がありますので、どの変数が最後に来るかは分かりません。 –

1
query = "https://api.myurl.com/search=" 
var and = "+AND+" 
var generalSearch = "x" + and; 
var dateRange = "y" + and; 
var ageRange = "z" + and; 
var limit=""; //initialise limit string as empty 
var limitIsRequired=true; //if u need to specify limit give it as true 
if(limitIsRequired){ 
limit="&limit=1000"; //if limit is needed update limit="&limit=1000" 
} 
var urlTopass=query + generalSearch + dateRange + ageRange"; //computing the full url here 
jQuery.ajax({ 
    type: "GET", 
    url: urlTopass.substr(0,urlTopass.length-5)+limit, //removing the last +AND+ 
    success: function(data) 
    {} 
}); 
+0

お返事ありがとうございます。これまでのところ好きですが、「a」が定義されていないというエラーが表示されています –

+0

更新されたanswer.nowチェック –

+0

okこれはうまくいきますが、私はそれを使うことができません。なぜなら私のURLの最後に '"&limit = 1000 "'を加えなければならないからです。 –

関連する問題