【问题标题】:.ajax will not POST, but will GET with no problem.ajax 不会 POST,但会 GET 没有问题
【发布时间】: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 添加到上述问题中

标签: jquery ajax


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-27
      • 2022-10-02
      • 2017-07-22
      • 2011-05-09
      • 2011-05-25
      • 1970-01-01
      • 2015-07-04
      • 2019-01-22
      相关资源
      最近更新 更多