.ajax 不会 POST,但会 GET 没有问题
Posted
技术标签:
【中文标题】.ajax 不会 POST,但会 GET 没有问题【英文标题】:.ajax will not POST, but will GET with no problem 【发布时间】:2010-12-21 23:02:36 【问题描述】:我正在尝试使用 jQuery 的 .ajax() 函数提交表单。看起来它应该很简单,但由于某种原因,我无法让 type: "POST" 正常工作。使用 type: "GET" 没有问题,但 "POST" 似乎实际上并没有向我接受的 php 脚本发布任何内容。当我执行 print_r($_POST) 时,它会返回一个空数组。我尝试在表单输入上同时使用输入类型“提交”和“按钮”,但它似乎没有改变任何东西。任何想法为什么它不起作用?
Ps - 此页面上有超过 1 个表单。
编辑澄清 如果我在使用 type:"GET" 时执行 print_r($_GET),它会打印出所有正确的数据,但如果我将 .ajax 选项更改为 type:"POST" 并尝试 print_r($_POST) 它会显示一个没有内容的空白数组。
JS代码:
var dataString = 'reply_text='+ 测试 + '&post_id=' + post_id ; $.ajax( 类型:“发布”, 网址:“process.php”, 数据:数据字符串, 缓存:假 ); 返回假;表格代码:
【问题讨论】:
你的ajax请求中使用的dataString
变量从何而来?
我正要问同样的问题。
嗨 Darin,dataString 直接出现在 .ajax 请求之前: var dataString = 'reply_text='+ text + '&post_id='+ post_id;而且我知道 dataString 工作正常,因为当我使用 GET 时它工作正常。我应该使用不同的字符串格式吗?
ps - 我已将 dataString 添加到上述问题中
【参考方案1】:
这可能会更好:
var text = ...
var post_id = ...
$.ajax(
type: 'POST',
url: 'process.php',
data: reply_text: text, post_id: post_id
);
【讨论】:
嗨达林,我刚刚尝试过,但仍然无法用于 POST(尽管它仍然适用于 GET)。 看FireBug的时候,看到发送的参数了吗?我开始怀疑您的服务器端脚本而不是 javascript 有问题。 哦,很棒的小费。我检查了 FireBug,它为我的 POST 提供了 302。原因是我使用 .htaccess 来重写我的 URL,最后没有“.php”。在我的js中,当我只需要将它发送到“process”(没有.php)时,我告诉ajax去“process.php”。我不敢相信修好了!非常感谢:D @justinl 很棒的提示,这正是我刚刚在做的事情,htaccess url 重写。谢谢!【参考方案2】:您如何连接您的活动?你确定它是被触发的吗?尝试在其中放置警报或其他内容,以确保?
您的dataString
是什么样的? type: 'POST'
足以使 ajax 回调成为帖子,因此可能是您的数据以错误的方式传递。
【讨论】:
我已更新原始问题以回答您的问题。谢谢【参考方案3】:如果您想使用 AJAX 发布表单,我建议您使用 jQuery Form Plugin,它可以很好地且不显眼。
【讨论】:
【参考方案4】:var formData =
'test': $('input[name=text]').val(),
'post_id': $('input[name=post_id]').val()
;
// process the form
$.ajax(
type: 'POST', // define the type of HTTP verb we want to use (POST for our form)
url: 'process.php', // the url where we want to POST
data: formData, // our data object
dataType: 'html', // what type of data do we expect back from the server
encode: true,
success: function(updatedTable)
//alert(updatedTable);
$('div#tableHolder').html(updatedTable);
)
【讨论】:
以上是关于.ajax 不会 POST,但会 GET 没有问题的主要内容,如果未能解决你的问题,请参考以下文章