如何使用一个标签用AJAX进行POST

时间:2016-03-02 02:56:17

标签: javascript php jquery ajax

我有一个a标签,它是用数据库内容动态生成的,它包含了我点击时在javascript中捕获的数据目标,这是其中一个生成按钮的示例:

<a href="#" data-target="edit/?id=1">Edit</a>

简单,对吧?

现在,点击JS时我在JS中所做的就是这样:

var $this = $(this),
    $target = $this.data("target"),
    $endpointURL = "";

$endpointURL = $target.split("?id=")[0];

$id = $target.split("?id=")[1];

这允许我设置我想要的端点,在上面的示例中,它将是&#34;编辑&#34;并且还设置了此时只是一个数字的id。

现在,我必须将此ID发送到编辑端点以返回正确的信息,对吗?

所以,这是我的AJAX:

$.ajax({
        type: "POST",
        data: '{"id": ' + $id + ' }',
        url: "../assets/scripts/php/" + $endpointURL,
        success: function (data) {
            $("#content-lockup").html(data);
        },
        error: function (jqXHR, textStatus, errorThrown) {
            console.log("error: " + textStatus + ", error thrown: " + errorThrown);
        }
    });

这不会抛出错误并确实输出$ _POST数组的var转储,因为我已将其设置为,但它不包含我传递的ID,这里是端点上的代码和截图输出:

<?php

var_dump($_POST);

?>

enter image description here

为什么$ _POST上的vardump不包含我在显然成功的AJAX请求中传递的id?

我期望的是我可以在端点上说,例如:

$id = $_POST['id'];

也许它显而易见,我做错了但是,是的,有什么想法吗?

1 个答案:

答案 0 :(得分:3)

这是因为您将字符串传递给data,而不是表单编码

使它成为一个对象,jQuery将为你编码

data: {"id": $id },

如果是字符串,则需要采用格式

data: 'id=' +id + '&someOtherParam=' + somevar