jQuery 发送字符串作为 POST 参数

Posted

技术标签:

【中文标题】jQuery 发送字符串作为 POST 参数【英文标题】:jQuery send string as POST parameters 【发布时间】:2011-06-30 03:15:51 【问题描述】:

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

以下代码:

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

不工作。为什么?

【问题讨论】:

我看到你是一名 php 开发人员,我也看到你这样做了:ca$libri=no$libri。只是在这里检查以确保...您确定您没有不小心尝试在应该使用 JS 的地方使用 PHP 结构吗?如果您想将 $libri 变量的值包含到此字符串中,请尝试以下操作:'foo=bar&ca' + $libri + '=no' + $libri nono :) 我了解通过 php 生成 js 的所有时刻 :) 它是 APS 中 ajax 变量的名称。我创建了使用 ajax 解析某些站点的解析器。现在我得到了为什么错误。这是因为跨域查询。我必须先为我的服务器创建查询:) 【参考方案1】:

试试这样:

$.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);
    
);

【讨论】:

不应该是数据: foo: 'bar' ,没有撇号'? @MariusStanescu,两者都是等价的javascript语法。 也很确定 ca$libri 中的 $ 完全没问题 不回答有关以字符串形式发布的问题:(,请参见下面的答案。 这行得通,但这行不通: foo: 'bar' 。我花了2天无故没有在两边加上字符串标志!!!【参考方案2】:
$.ajax(
    type: 'POST',    
    url:'http://nakolesah.ru/',
    data:'foo='+ bar+'&calibri='+ nolibri,
    success: function(msg)
        alert('wow' + msg);
    
);

【讨论】:

这就是我来这里的原因,以了解如何将 $.post 数据作为字符串发送。接受的答案根本没有帮助我。谢谢。 同意,我也遇到过我正在开发的框架需要字符串的情况,很好的答案。在我的情况下,我可以通过将字符串放在数据旁边的变量中来完成这项工作:,我的字符串的格式是 '?var=value&var2=value2'【参考方案3】:

我看到他们没有理解你的问题。

答案是:"traditional" 参数添加到您的ajax 调用中,如下所示:

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

它可以与参数 PASSED AS A STRING 一起使用。

【讨论】:

谢谢!这节省了我的时间!【参考方案4】:

对于类似的应用程序,我必须像这样用JSON.stringify() 包装我的data 对象:

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

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

【讨论】:

为什么我们必须这样做? 不确定,但除非强制,否则响应中的某些字符不得视为字符串。【参考方案5】:

不确定这是否仍然是真实的……仅供未来的读者阅读。 如果您真正想要的是将参数作为 URL 的一部分传递,您可能应该使用 jQuery.param()。

【讨论】:

【参考方案6】:

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

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

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

【讨论】:

【参考方案7】:

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

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

【讨论】:

【参考方案8】:

我在将字符串值传递给 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 方法中的相应字符串参数。

【讨论】:

【参考方案9】:

取而代之的是,将 POST 请求编码为字符串并传递给 data 参数,

var requestData = "Param1=" + encodeURIComponent(jsParam1) + "&Param2="+ encodeURIComponent(jsParam2);

var request = $.ajax(
                            url: page + "?" + getVars,
                            method: "POST",
                            data: requestData,
                            dataType: "html",
                            contentType: 'application/x-www-form-urlencoded; charset=UTF-8'
                    );

【讨论】:

以上是关于jQuery 发送字符串作为 POST 参数的主要内容,如果未能解决你的问题,请参考以下文章

Jquery Ajax向服务端传递数组参数值

如何将 Retrofit POST 正文作为 JSON 字符串发送?

使用 jquery ajax 将 javascript 数组变量发送到 php 脚本(获取字符串作为输出而不是数组)

将 JSON 发送到服务器并返回 JSON,无需 JQuery

HTTP POST 请求中如何发送参数?

jquery post如何传值