jQuery envía cadena como parámetros POST


97

Quiero enviar una cadena como parámetro de publicación ajax.

El siguiente código:

$.ajax({
   type: "POST",
   url: "http://nakolesah.ru/",
   data: 'foo=bar&ca$libri=no$libri',
   success: function(msg){
     alert('wow'+msg);
   }
});

No está trabajando. ¿Por qué?


2
Veo que usted es un desarrollador de PHP y también veo que usted hizo esto: ca$libri=no$libri. Solo verificando para estar seguro aquí ... ¿está seguro de que no está tratando accidentalmente de usar construcciones PHP donde deberían estar las de JS? Si desea incluir el valor de la $librivariable de en esta cadena, intente lo siguiente: 'foo=bar&ca' + $libri + '=no' + $libri.
treeface

nono :) Entiendo todos los momentos de generar js por php :) son los nombres de las variables ajax en APS. Creo un analizador que analiza algún sitio con ajax. Y ahora entiendo por qué error. Es una consulta de dominio cruzado porque. Debo crear una consulta primero en mi servidor :)
Mirgorod

Respuestas:


181

Intente así:

$.ajax({
    type: 'POST',
    // make sure you respect the same origin policy with this url:
    // http://en.wikipedia.org/wiki/Same_origin_policy
    url: 'http://nakolesah.ru/',
    data: { 
        'foo': 'bar', 
        'ca$libri': 'no$libri' // <-- the $ sign in the parameter name seems unusual, I would avoid it
    },
    success: function(msg){
        alert('wow' + msg);
    }
});

1
¿No deberían ser datos: {foo: 'bar'}, sin el apóstrofe '?
Marius Stănescu

6
@MariusStanescu, ambos tienen una sintaxis equivalente de javascript.
Darin Dimitrov

3
también estoy bastante seguro de que el $ en el ca $ libri está perfectamente bien
Michael Crook

No responde la pregunta sobre la publicación como cadena :(, vea la respuesta a continuación.
Andrew

Esto funciona pero esto no: foo: 'bar'. ¡He pasado 2 días sin causa! ¡No agregué los signos de cuerdas a ambos lados!
Eugen Sunic

39
$.ajax({
    type: 'POST',    
    url:'http://nakolesah.ru/',
    data:'foo='+ bar+'&calibri='+ nolibri,
    success: function(msg){
        alert('wow' + msg);
    }
});

15
por eso vine aquí, para averiguar cómo enviar datos de $ .post como una cadena. la respuesta aceptada no me ayuda en absoluto con eso. gracias.
chiliNUT

De acuerdo, también tuve una situación en la que se requería una cadena para un marco que estaba desarrollando, buena respuesta. En mi situación, pude hacer que esto funcionara colocando la cadena en una variable junto a los datos: el formato de mi cadena era '? Var = value & var2 = value2'
Joseph Astrahan

13

Veo que no entendieron tu pregunta. La respuesta es: agregue el parámetro "tradicional" a su llamada ajax de esta manera:

$.ajax({
  traditional: true,
  type: "POST",
  url: url,
  data: custom ,
  success: ok,
 dataType: "json"
});

Y funcionará con parámetros PASADOS COMO UNA CADENA.


¡Gracias! ¡Esto me salva el día!
Dat TT

11

Para una aplicación similar, tuve que envolver mi dataobjeto con JSON.stringify()esto:

data: JSON.stringify({ 
  'foo': 'bar', 
  'ca$libri': 'no$libri'
}),

La API estaba trabajando con un cliente REST pero no pudo hacer que funcionara con jquery ajax en el navegador. stringify fue la solución.


¿Por qué tuvimos que hacer esto?
Renoir Reis

No estoy seguro, pero algunos caracteres de la respuesta no deben considerarse cadenas a menos que estén forzados.
Dylan Valade

4

No estoy seguro de si esto sigue siendo real ... solo para futuros lectores. Si lo que realmente desea es pasar sus parámetros como parte de la URL, probablemente debería usar jQuery.param () .


1

No es una respuesta directa a su pregunta. Pero la siguiente es la única sintaxis que solía funcionar para mí:

data: '{"winNumber": "' + win + '"}',

Y el nombre del parámetro coincide con el argumento del método del servidor


1

También me he enfrentado a este problema exacto. Pero tengo una solución y funcionó perfectamente. He necesitado pasar los parámetros que ya son producidos por la función javascript. Así que el siguiente código funciona para mí. Solía ColdFusion para el backend. Solo utilicé directamente los parámetros como una variable.

                    $.ajax({
                    url: "https://myexampleurl.com/myactionfile.cfm",
                    type: "POST",
                    data : {paramert1: variable1,parameter2: variable2},
                    success: function(data){
                        console.log(data);                              
                    } )};

0

Estaba enfrentando el problema al pasar el valor de la cadena a los parámetros de la cadena en Ajax. Después de tanto buscar en Google, se me ocurrió una solución personalizada como la siguiente.

var bar = 'xyz';
var calibri = 'no$libri';

$.ajax({
   type: "POST",
   dataType: "json",
   contentType: "application/json; charset=utf-8",
   url: "http://nakolesah.ru/",
   data: '{ foo: \'' + bar + '\', zoo: \'' + calibri + '\'}',
   success: function(msg){
       alert('wow'+msg);
   },
});

Aquí, bar y calibri son dos variables de cadena y puede pasar cualquier valor de cadena a los parámetros de cadena respectivos en el método web.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.