我有一个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);
?>
为什么$ _POST上的vardump不包含我在显然成功的AJAX请求中传递的id?
我期望的是我可以在端点上说,例如:
$id = $_POST['id'];
也许它显而易见,我做错了但是,是的,有什么想法吗?
答案 0 :(得分:3)
这是因为您将字符串传递给data
,而不是表单编码
使它成为一个对象,jQuery将为你编码
data: {"id": $id },
如果是字符串,则需要采用格式
data: 'id=' +id + '&someOtherParam=' + somevar