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.