jQuery发送字符串作为POST参数


96

我想发送一个字符串作为ajax Post参数。

如下代码:

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

不管用。为什么?


2
我看到您是PHP开发人员,并且我也看到您这样做:ca$libri=no$libri。只是检查以确保在这里...您确定不是偶然地尝试使用应该包含JS结构的PHP结构吗?如果要将$libri变量的值包含在此字符串中,请尝试以下操作:'foo=bar&ca' + $libri + '=no' + $libri
树面

nono :)我了解通过php生成js的所有时间:)这是APS中ajax变量的名称。我创建了使用ajax解析某些站点的解析器。现在我明白了为什么会出错。这是因为跨域查询。我必须先向服务器创建查询:)
Mirgorod'2

Answers:


180

尝试这样:

$.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
它不应该是数据:{foo:'bar'},不带撇号'吗?
MariusStănescu13年

6
@MariusStanescu,两者都是等效的等效javascript语法。
Darin Dimitrov

3
还可以肯定,ca $ libri中的美元是完全可以的
Michael Crook 2015年

不回答有关以字符串形式发布的问题:(,请参阅下面的答案
Andrew

这可行,但是不行:foo:'bar'。我花了两天的时间,我没有向双方加弦符号!!!
Eugen Sunic '16

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

15
这就是为什么我来这里的原因,以了解如何将$ .post数据作为字符串发送。公认的答案完全不能帮助我。谢谢。
chiliNUT 2014年

同意,我也遇到这样的情况,即我正在开发的框架需要字符串,这是一个很好的答案。在我的情况下,我可以通过将字符串放在数据旁边的变量中来完成这项工作:字符串的格式为“?var = value&var2 = value2”
Joseph Astrahan

13

我发现他们不理解您的问题。答案是:在您的ajax调用中添加“传统”参数,如下所示:

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

并且它将与参数“通过”一起使用。


谢谢!这可以节省我的时间!
DTT TT

11

对于类似的应用程序,我必须用以下方法包装我的data对象JSON.stringify()

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

该API正在使用REST客户端,但无法使其与浏览器中的jquery ajax一起运行。解决是stringify。


为什么我们必须这样做?
雷诺阿·里斯

不确定,但除非强制,否则响应中的某些字符不得视为字符串。
Dylan Valade

4

不知道这是否仍然是实际的..仅适用于将来的读者。如果您真正想要的是将参数作为URL的一部分传递,则可能应该使用 jQuery.param()


1

不是您问题的直接答案。但是以下是唯一对我有用的语法-

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

并且参数名称与服务器方法的参数匹配


1

我也遇到了这个确切的问题。但是我有一个解决方案,并且效果很好。我需要传递已经由javascript函数产生的参数。所以下面的代码为我工作。我将ColdFusion用于后端。我只是直接将参数用作变量。

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

0

我在将字符串值传递给Ajax中的字符串参数时遇到了问题。经过这么多的谷歌搜索,我想出了一个自定义解决方案,如下所示。

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

在这里,barcalibri是两个字符串变量,您可以在Web方法中将任何字符串值传递给相应的字符串参数。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.