Pregunta

Tengo una URL generada por el servidor.Estar en el cliente, no sé si la dirección URL será : http://url/parameter o http://url/parameter?anotherPar=1 .

este valor está disponible para una variable de javascript:

  var theUrl = '{someURLgeneratedByTheServer}';

Me gustaría utilizar window.location.href pasando algunos parámetros, pero no puedo hacer es:

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

para esto sería válido si el generado por el servidor de la URL ya tiene algunos parámetros querystring.Sé que cuando estoy usando jQuery, Ajax método que puede utilizar las opciones de paso de parámetros el objeto de datos con los necesarios parámetros de querystring, y jQuery sí mismo es capaz de decidir si tiene que concat con ?o &, como este:

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

Hay una manera de hacer una redirección usando este concat mecanismo de jquery antes de llamar location.href?(algo como el ejemplo de abajo):

//supposition only, when  theUrl equals 'http://url/parameter?anotherPar=1'
var finalUrl = $.getMyFinalUrl({url: theUrl,
                 data: {someClientGeneratedParameter:'value', secondParameter:'value2'}
                });
window.location.href = finalUrl ;

¿Tiene sentido o debo escribir mi propio método?

Gracias.

PS:el uso de Asp.net MVC3 en el servidor + C#.

¿Fue útil?

Solución

¿Algo como esto?Sacar la demo y código es muy sencillo y te permite pasar parámetros de la matriz:

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));

Salida:

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

Violín: http://jsfiddle.net/gjuqG/

Otros consejos

Una expresión simple para comprobar la url antes de anexar datos debería ser suficiente:

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

Que le dirá si necesita añadir ? o &.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top