Can';t在javascript中将变量传递到ajax url
我基本上是想删除mongodb中的一个项目。但在ajax调用中,我似乎无法将id传递到url中。这是我的密码:Can';t在javascript中将变量传递到ajax url,javascript,jquery,ajax,url,Javascript,Jquery,Ajax,Url,我基本上是想删除mongodb中的一个项目。但在ajax调用中,我似乎无法将id传递到url中。这是我的密码: $(“.delete item”)。在('click',函数(e,id){ var deleteName=$('p.nameLink').text(); //先拿到身份证 $.ajax({ 键入:“获取”, url:“/items”, 数据类型:“json”, }) .done(函数(结果){ //在mongodb中搜索单击的名称,并将结果保存在var中 var newResult=$
$(“.delete item”)。在('click',函数(e,id){
var deleteName=$('p.nameLink').text();
//先拿到身份证
$.ajax({
键入:“获取”,
url:“/items”,
数据类型:“json”,
})
.done(函数(结果){
//在mongodb中搜索单击的名称,并将结果保存在var中
var newResult=$.grep(结果,函数(e){returne e.name===deleteName;});
var id=newResult[0]。\u id;
})
.fail(函数(jqXHR、错误、错误抛出){
console.log(jqXHR);
console.log(错误);
console.log(错误抛出);
});
//然后删除
log(“要删除的ID:,ID);//我可以看到ID
函数itemDelete(id){
$.ajax({
键入:“删除”,
url:'/items/'+id,
数据类型:“json”,
})
.完成(功能(结果){
console.log(“要删除的ID:”,ID);//看不到ID
})
.fail(函数(jqXHR、错误、错误抛出){
console.log(jqXHR);
console.log(错误);
console.log(错误抛出);
});
}
itemDelete(id);//将id传递给函数
});
我现在只是在学习,所以我可能会走错方向。如果有人能帮我,我将不胜感激
错误消息是:
DELETE 500(内部服务器错误)由于ajax调用是异步的,您应该从第一个.done回调内部调用itemDelete(id)。 试着移动
itemDelete(id);
刚过
var id = newResult[0]._id;
这样,您将仅在第一个ajax调用终止后执行第二个ajax调用,并且将定义id变量
更改后,您的代码应如下所示:
$(".delete-item").on('click', function(e, id) {
var deleteName = $('p.nameLink').text();
$.ajax({
type: "GET",
url: "/items",
dataType: 'json',
})
.done(function(result) {
var newResult = $.grep(result, function(e){
return e.name === deleteName;
});
var id = newResult[0]._id;
itemDelete(id);
})
.fail(function (jqXHR, error, errorThrown) {
console.log(jqXHR);
console.log(error);
console.log(errorThrown);
});
function itemDelete(id) {
$.ajax({
type: 'DELETE',
url: '/items/' + id,
dataType: 'json',
})
.done(function(result) {
})
.fail(function (jqXHR, error, errorThrown) {
console.log(jqXHR);
console.log(error);
console.log(errorThrown);
});
}
});
https://www.someplace.com/items/undefined
表示该id未定义。请注意,get和delete请求是异步发生的,因此不能保证在发出删除请求时设置id
,因为这取决于请求完成的时间。换言之,在获得id后尝试删除。这将要求您在get请求的成功回调中发出删除请求。这一项应该适用于您
$(“.delete item”)。在('click',函数(e,id){
var deleteName=$('p.nameLink').text()
//先拿到身份证
$.ajax({
type: "GET",
url: "/items",
dataType: 'json',
})
.done(function(result) {
// searches mongodb for the clicked name and saves the result in the var
var newResult = $.grep(result, function(e){ return e.name === deleteName; });
var id = newResult[0]._id;
itemDelete(id); // pass the id to the function
})
.fail(function (jqXHR, error, errorThrown) {
console.log(jqXHR);
console.log(error);
console.log(errorThrown);
});
console.log("ID to DELETE:", id); // I can see id
function itemDelete(id) {
$.ajax({
type: 'DELETE',
url: '/items/' + id,
dataType: 'json',
})
.done(function(result) {
console.log("ID to DELETE:", id); // Can't see the id
})
.fail(function (jqXHR, error, errorThrown) {
console.log(jqXHR);
console.log(error);
console.log(errorThrown);
});
}
});
谢谢请试试这个
$.ajax({
type: 'get',
dataType : 'html',
url: 'your_url',
data:{variablname:id,type:'DELETE'}
dataType: 'json',
})
在url页面或操作中,获取其类型为get的值,以便数据类型为get
if(isset($_GET['variablename'],$_GET['type'])){
if($_GET['type']=='DELETE')
delete record from database where id= $_GET['variablename']
}
我希望它能帮助您,谢谢尝试使用
type:'POST'
代替type:DELETE'