【问题标题】:jQuery send string as POST parametersjQuery 发送字符串作为 POST 参数
【发布时间】: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 解析某些站点的解析器。现在我得到了为什么错误。这是因为跨域查询。我必须先为我的服务器创建查询:)

标签: ajax post jquery


【解决方案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'
                              });
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2018-05-06
            • 1970-01-01
            • 2016-03-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-04-30
            相关资源
            最近更新 更多