Leff
Me gustaría pasar una matriz y agregarla a un enlace en mi página como un parámetro de URL, porque más adelante en el lado del servidor necesito los valores de la matriz. ¿Cómo debo hacer eso?
myArray = ['aaa', 'bbb', 'ccc'];
$('#myLink').attr({"href" : '/myLink?array=' + myArray});
No estoy seguro de si esa es la forma correcta de hacer esto.
rodrigocfd
Puede serializar el JSON:
myArray = ['aaa', 'bbb', 'ccc'];
var arrStr = encodeURIComponent(JSON.stringify(myArray));
$('#myLink').attr({ href: '/myLink?array=' + arrStr });
Si su análisis (en la página siguiente) también se realiza a través de JavaScript, usará a la inversa JSON.parse(). En PHP sería json_decodificar().
-
“encodeURIComponent” es una función js estándar?
– reza akhlaghi
15 de febrero de 2021 a las 11:12
-
@rezaakhlaghi: sí, mira desarrollador.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
– SaeX
6 de marzo de 2021 a las 14:56
pequeño santi
No debería depender del lado del servidor: según la especificación estándar de URI, todos los parámetros deben tener un nombre y un valor. Pero puede haber varios parámetros con el mismo nombre, que es la forma correcta de serializar una matriz:
http://servidor/contexto?array=aaa&array=bbb&array=ccc&otherparameter=x
Podrías hacerlo así:
var s="";
for (var i=0;i< myArray.length;i++)
{
s+="&myArray="+myArray[i];
}
var url="http://server/context?"+s;
-
esta bien pero necesito editar
s+="&myArray="+myArray[i];
as+="&myArray[]="+myArray[i];
– meegipto
22 de abril de 2020 a las 8:02
-
@megyptm No, en absoluto. Mi enfoque producirá múltiples valores para el parámetro llamado “myArray”. Como dices, sería a un parámetro llamado “myArray[]”.
– El pequeño Santi
22 de abril de 2020 a las 10:33
-
¿Por qué no usar?
URLSearchParams
? con métodos.append
y.toString
–Diego Lope Loyola
15 de noviembre de 2021 a las 18:44
prueba esto
$('#myLink').attr({"href" : '/myLink?array=' + myArray.join(',')});
en el servidor: capturar y dividir datos.
-
forma limpia y elegante de lograrlo.
– Jawand Singh
10 oct 2021 a las 22:55
StefanBob
Cómo pasar una matriz de cadenas como parámetros de URL:
const myLink = 'https:/example.com/api'
const myArray = ['aaa', 'bbb', 'ccc'];
let apiUrl = `${myLink}/query?`;
myArray.forEach((x, i) => {
if (i === 0) {
apiUrl += `array=${x}`;
} else {
apiUrl += `&array=${x}`;
}
});
console.log(apiUrl);
document.body.innerHTML = apiUrl;
Mi acercamiento:
var myArray = ['aaa', 'bbb', 'ccc'];
var baseUrl="/myLink";
var paramName="array=";
var arrayAsString = '?' + paramName + myArray.join('&' + paramName);
var urlWithParams = baseUrl + arrayAsString;
window.location.href = urlWithParams;
Ahmet Firat Keler
Otra forma de hacerlo es la siguiente
import Router from 'next/router'
Router.push({
pathname: '/search',
query: {searchTerm: searchRef.current ? searchRef.current["value"] : '', codeSets: JSON.stringify(selectedCodeSets)}
}, '/search');
selectedCodeSets en este ejemplo es una matriz de datos de estado
const [selectedCodeSets, setSelectedCodeSets] = useState<any>(['1']);
Podemos analizar esos datos en la página dirigida como a continuación
import {withRouter} from 'next/router'
const DaComponent = (props) => {
useEffect(() => {
let codeSets = JSON.parse(props.router.query.codeSets);
}, [props.router]);
};
export default withRouter(DaComponent);
Salman Ashraf
myArray = ['aaa', 'bbb', 'ccc'];
myArrString = JSON.stringify(myArray.join("_"))
$('#myLink').attr({"href" : `/myLink?array=${myArrString}`});
Y luego, cuando lo necesite más adelante, puede analizarlo y luego recuperar su matriz así
JSON.parse(myArrString).split("_")
“¿Cómo debo hacer eso?” Eso realmente depende del idioma del lado del servidor que esté usando y cómo espera que se formatee la información. Por ejemplo, ¿el servidor espera JSON? ¿O un parámetro por valor? ¿Una lista de valores separados por comas? ¿Algo más?
– Félix Kling
08/11/2016 a las 17:35
Ya que estás usando jQuery, puedes probar
$.param({ array: myArray }, true);
– haim770
8 de noviembre de 2016 a las 17:36
La respuesta es que no puedes, no con Javascript. Todas las soluciones que termines no serían en realidad algo que pasarías. Lo que puede hacer es pasar un parámetro similar a una matriz y devolverlo con su idioma del lado del servidor. ¿Por qué necesita pasar toda la matriz de todos modos?
– marco
8 de noviembre de 2016 a las 17:37
@FelixKling estoy usando laravel en el lado del servidor
– Leff
8 de noviembre de 2016 a las 17:39
stackoverflow.com/questions/18417265/… Verifique el enlace anterior.
– Okkyajy
14 de junio de 2019 a las 11:48