【问题标题】:Send multiple pieces of data through .ajax() for processing in PHP script通过 .ajax() 发送多条数据在 PHP 脚本中进行处理
【发布时间】:2011-06-02 13:16:13
【问题描述】:

我正在尝试通过 .ajax() 将两组不同的信息发送到 PHP 脚本以进行处理并遇到问题。

在这种情况下,用户进入一个页面,并且 1) 计时器开始计算秒数,以及 2) 用户必须为表单填写一系列输入。当用户单击提交按钮时,我想将两组信息(当前计时器计数和所有用户输入)发送到 PHP 脚本。

我可以成功发送一组信息或另一组信息,但无法找到同时通过 .ajax() 发送两组数据的方法。

这是我现在得到的 jQuery,它尝试发送两条数据但失败:

 $(document).ready(function(){
    var count = 0;
    setInterval(function(){
        count++;
        $('#timer').html(count + ' secs.');
    },1000);

// displays user structureand suggested answers on structure page
$('#process_structure').click(function () {
    var text = $.ajax ({
        type: "POST",
        url: "structure_process.php",
        data: $('#inputs_structure').serialize(), data: {count: count},
        dataType: "json",
        async: false,
    }).responseText;
    $('#test_ajax').html(text); 
})
});

任何指针将不胜感激。谢谢!

【问题讨论】:

  • 定时器可以设置在服务器端,这样用户就无法操作它。您可以为此使用会话变量。前端计时器可以只是一个虚拟的

标签: jquery ajax timer


【解决方案1】:

假设structure_process.php 同时接受两条数据,您可以使用serializeArray() 而不是serialize(),附加您的额外数据,然后使用jQuery.param() 将数组转换为jQuery.ajax() 的字符串会接受的。

$('#process_structure').click(function () {
    var postData = $('#inputs_structure').serializeArray();
    postData.push({name: 'count', value: count});
    var text = $.ajax ({
        type: "POST",
        url: "structure_process.php",
        data: $.param(postData),
        dataType: "json",
        async: false,
    }).responseText;
    $('#test_ajax').html(text);
});

【讨论】:

  • 有趣。我应该能够通过使用 $_POST['count'] 在 structure_process.php 中提取计数数据?我可能遗漏了一些东西,但我刚刚尝试了您的代码并通过 $_POST 访问计数但无法获取它
  • 是的,这将(应该)向 POST 数据添加一个名为 count 的附加值。
  • 嗯。你说的对我来说很有意义,但我无法让它发挥作用。尝试发布时出现“未定义索引:计数”错误。任何想法为什么?
  • 如果您想检查数组是否设置正确,您可以在 push() 调用之后对 console.log 执行 console.log 或等效操作,但这应该可以正常工作。这里和你的代码之间的翻译可能会丢失一些东西;您可以发布您尝试过但不起作用的内容。
  • 谢谢约翰!这非常有效。我之前遇到了麻烦,因为当我在这个页面上工作时,我在 中包含了相同 AJAX 调用的早期版本并且忘记了它。因此,对我的主要 js src 的所有新编辑都被覆盖并且未被使用。令人沮丧!但我感谢您的帮助并很高兴它得到了解决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-19
  • 1970-01-01
  • 2017-02-24
  • 2013-10-12
相关资源
最近更新 更多