Can';t在javascript中将变量传递到ajax 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=$

我基本上是想删除mongodb中的一个项目。但在ajax调用中,我似乎无法将id传递到url中。这是我的密码:

$(“.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'