1

私はサーバーによって生成されたURLを持っています。クライアントにいるため、URLがhttp://url/parameterhttp://url/parameter?anotherPar=1かどうかわかりません。データを使用したjQueryからのリダイレクトの使用

この値はjavascriptの変数に提供されています:

var theUrl = '{someURLgeneratedByTheServer}'; 

私はいくつかのパラメータを渡すwindow.location.hrefを使用するようにしたいのですが、私はちょうどそれを行うことはできません。このため

window.location.href = theUrl + '?someClientGeneratedParameter=value&secondParameter=value2'; 

だろうサーバー生成URLにすでにクエリーストリングパラメータがある場合は無効です。私は、jQueryのAjaxメソッドを使用しているときに、オプションのパラメータを使用して、必要なクエリ文字列パラメータでデータオブジェクトを渡すことができ、jQuery自体が、連結する必要があるかどうかを判断できます。または、このような&、:

$.ajax({ 
      type: "GET", 
      url: theUrl, 
      data: {someClientGeneratedParameter:'value', secondParameter:'value2'}, 
      success: callback 
     }); 

location.hrefを呼び出す前に、jqueryのの、この連結メカニズムを使用してリダイレクトを作成する方法はありますか? (以下のようなもの):

自分の方法を書いてもいいですか?

ありがとうございました。

PS:サーバーでAsp.net MVC3を使用する+ C#。

答えて

4

どうやってこのようになりますか?デモコードをリッピングし、それは非常に簡単だとあなたは、配列によってパラメータを渡してみましょう:

function getURL(theUrl, extraParameters) { 
    var extraParametersEncoded = $.param(extraParameters); 
    var seperator = theUrl.indexOf('?') == -1 ? "?" : "&"; 

    return(theUrl + seperator + extraParametersEncoded); 
} 


// Test1 
var theUrl1 = "http://example.com/test" 
var extraParameters1 = { 
    "someClientGeneratedParameter": "value", 
    "secondParameter": "value2" 
}; 
alert(getURL(theUrl1, extraParameters1)); 

// Test2 
var theUrl2 = "http://example.com/?test=test" 
var extraParameters2 = { 
    "someClientGeneratedParameter": "value", 
    "secondParameter": "value2" 
}; 
alert(getURL(theUrl2, extraParameters2)); 

出力:

http://example.com/test?someClientGeneratedParameter=value&secondParameter=value2 http://example.com/?test=test&someClientGeneratedParameter=value&secondParameter=value2

フィドル:http://jsfiddle.net/gjuqG/

+0

これは私が欲しかったのですが、 'param'関数また、indexOfの自動検証機能を備えています。私はjQueryがこれを利用できるようにし、 'ajax'と' post'メソッドの中だけでなく、ありがとう! jQuery BBQ(http://benalman.com/projects/jquery-bbq-plugin/)を使って、私はおそらく 'return $ .param.querystring(theUrl、$ .param(extraParameters) )) 'を実行します。 ありがとうございます。 よろしく、 – ClayKaboom

1

データが十分でなければならない追加する前に、URLを確認するために簡単な式:

location.href.match(/(\?|&)anotherPar($|&|=)/)

あなたが?&を追加する必要がある場合を教えてくれます。

+0

しかし、私は 'anotherPar'の名前を知らないのですか? – ClayKaboom

+2

これは簡単になるでしょう。式を使用する代わりに、indexOfを使用してURLの疑問符を確認してください: 'if(location.href.indexOf("? ")!= -1)' –

関連する問題