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);
,
);
这里,bar 和 calibri 是两个字符串变量,您可以将任何字符串值传递给 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 参数的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Retrofit POST 正文作为 JSON 字符串发送?
使用 jquery ajax 将 javascript 数组变量发送到 php 脚本(获取字符串作为输出而不是数组)