jQuery enviar string como parâmetros POST


97

Eu quero enviar uma string como um parâmetro Post ajax.

O seguinte código:

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

Não está funcionando. Por quê?


2
Vejo que você é um desenvolvedor PHP e eu também ver que você fez isso: ca$libri=no$libri. Apenas checando para ter certeza aqui ... tem certeza de que não está acidentalmente tentando usar construções PHP onde as de JS deveriam estar? Se você quiser incluir o valor da $librivariável para essa corda, tente o seguinte: 'foo=bar&ca' + $libri + '=no' + $libri.
treeface

nono :) eu entendo todos os momentos de geração de js por php :) são os nomes das variáveis ​​ajax em APS. Eu crio um analisador que analisa algum site com ajax. E agora entendi porque erro. É coz crossdomain query. Devo primeiro criar uma consulta no meu servidor :)
Mirgorod

Respostas:


181

Tente assim:

$.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
não deveria ser data: {foo: 'bar'}, sem o apóstrofo '?
Marius Stănescu

6
@MariusStanescu, ambos são sintaxe javascript equivalente equivalente.
Darin Dimitrov,

3
também tenho certeza que o $ no ca $ libri está perfeitamente bem
Michael Crook

Não responde à pergunta sobre postagem como string :(, veja a resposta abaixo.
Andrew

Isso funciona, mas isso não funciona: foo: 'bar'. Passei 2 dias sem causa e não coloquei os sinais das cordas em ambos os lados !!!
Eugen Sunic

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

15
é por isso que vim aqui, para descobrir como enviar dados $ .post como uma string. a resposta aceita não me ajuda em nada. obrigado.
chiliNUT

Concordo, eu também tive uma situação em que uma string foi necessária para um framework que eu estava desenvolvendo, boa resposta. Na minha situação, consegui fazer isso funcionar colocando a string em uma variável ao lado dos dados :, o formato da minha string era '? Var = value & var2 = value2'
Joseph Astrahan

13

Vejo que eles não entenderam sua pergunta. A resposta é: adicione o parâmetro "tradicional" à sua chamada ajax assim:

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

E funcionará com os parâmetros PASSADOS COMO STRING.


Obrigado! Isso salva meu dia!
Dat TT de

11

Para um aplicativo semelhante, tive que envolver meu dataobjeto JSON.stringify()assim:

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

A API estava funcionando com um cliente REST, mas não conseguiu fazer com que funcionasse com jquery ajax no navegador. stringify foi a solução.


Por que tivemos que fazer isso?
Renoir Reis

Não tenho certeza, mas alguns caracteres na resposta não devem ser considerados strings, a menos que sejam forçados.
Dylan Valade

4

Não tenho certeza se isso ainda é real .. apenas para leitores futuros. Se o que você realmente deseja é passar seus parâmetros como parte da URL, você provavelmente deve usar jQuery.param () .


1

Não é uma resposta direta à sua pergunta. Mas seguir é a única sintaxe que costumava funcionar para mim -

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

E o nome do parâmetro corresponde ao argumento do método do servidor


1

Eu também enfrentei esse mesmo problema. Mas eu tenho uma solução e funcionou perfeitamente. Precisei passar os parâmetros que já são produzidos pela função javascript. Portanto, o código abaixo está funcionando para mim. Usei ColdFusion para o back-end. Eu apenas usei diretamente os parâmetros como uma variável.

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

0

Eu estava enfrentando o problema de passar o valor da string para parâmetros de string no Ajax. Depois de tanto pesquisar no Google, eu vim com uma solução personalizada como abaixo.

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

Aqui, bar e calibri são duas variáveis ​​de string e você pode passar qualquer valor de string para os respectivos parâmetros de string no método da web.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.