用AJAX发送两个变量(我有一个工作,但需要两个)


Sending two variables with AJAX (I have one working but need two)

我使用以下代码发送到一个php脚本添加到mysql数据库。php代码工作良好,设置接收两个变量,但我不确定如何更改ajax代码传递超过2(或更多)变量,而不是1到php脚本。我已将传递的变量命名为'taskA',并希望添加'taskB'

function add_task() {
    $('.add-new-task').submit(function(){
    var new_taskA = $('.add-new-task select[name=new-taskA]').val();
    if(new_taskA != ''){
    $.post('add-task.php', { taskA: new_taskA }, function( data ) {
    $('.add-new-taskA select[name=new-taskA]').val('');
    $(data).appendTo('.task-list ul').hide().fadeIn();
                delete_task();
            });
    }
    return false;
    });
}
function delete_task() {
    $('.delete-button').click(function(){
    var current_element = $(this);
    var id = $(this).attr('id');
    $.post('delete-task.php', { task_id: id }, function() {
    current_element.parent().fadeOut("fast", function() { $(this).remove(); });
    });
    });
}

提前致谢

{ taskA : new_taskA }是一个变量(一个对象)。但是一个对象可以有很多键/值对:{ taskA: new_taskA , taskB : new_taskB}仍然是你传递的一个对象,但是包含更多的东西。你可以通过这种方式传递任意多的数据:字符串,数字,对象,等等。

服务器端,使用:

$taskA = $_POST['taskA'];
$taskB = $_POST['taskB'];

或者甚至是一个通用循环,将所有POST变量转换为PHP变量:

foreach ($_POST as $var => $value)  $$var = $value;

这将自动设置$taskA, $taskB, $taskWhatever变量与相应的值。不过要注意安全性,不要忘记对内容进行消毒。

您可以通过,符号传递多个值
{taskA: new_taskA,taskB:new_taskB}

如何:

$.post('add-task.php', { taskA: new_taskA, taskB: new_taskB }, function(...

只需在变量之间添加','。可以在jQuery api页面的底部找到:http://api.jquery.com/jquery.ajax/

即:

$.ajax({
  method: "POST",
  url: "some.php",
  data: { name: "John", location: "Boston" }
})