通过Ajax成功函数传递参数

3

我有一个ajax函数:

function abc(url){    
$.ajax({
                url:'/account/search',
                type:'GET',
                success:update(url),
                error:function(error){
                    console.log(error);
                }
            });
}

成功后,将调用一个更新函数:
   function update(response,url){
            list = response.data;
            var i=0;
            var q = list.length;
}

但它会抛出错误:无法读取未定义的属性“length”在控制台中。

由于update函数已经从另一个文件中接收到数据,这些数据在参数response中传递,因此我无法将其删除。

请提供建议,如何从AJAX调用正确地传递参数(例如本例中的“url”)给update函数。

谢谢


请打印 console.log(list) 和 console.log(response)。 - HoangHieu
在您的成功函数中调用update时,您只传递了一个参数,即url。我假设它是一个字符串,没有数据,因此在您的代码中,list实际上等于url.data。所以list没有长度。您不能在新函数中使用另一个函数的响应,该变量的作用域限定在第一个函数中。 - Rick Calder
3个回答

11

你需要另一个函数。 success回调本身只接收一个参数:AJAX响应。如果你需要第二个参数,那么你需要在它们之间进行一个函数调用。

function abc(url){    
  $.ajax({
                url:'/account/search',
                type:'GET',
                success: function(data){ update(data, url); },
                error:function(error){
                    console.log(error);
                }
            });
}

那样做能够从周围的对象中提取url属性并像那样传递它吗? - James
@James 这将接受 abc()url 参数并将其传递,是的。 顺便说一下,您的错误很可能与此无关。 - Sirko
1
我需要更多的咖啡,我没有发现包装 abc 函数。 - James

0
尝试这个:在这种情况下可能有效。使用此绑定值可能有效。

   
   
     function addRemoveQuestion(id){
        
         
         var formData =    $("#q_"+id).serialize()  
         
        $.ajax({
            method: "POST",
            url: window.location.href,
            data: formData,
            success: handleFormSuccess.bind(this, id) ,
            error: handleFormError,
        })
   }
   function handleFormSuccess( data, response,textStatus, jqXHR){
        console.log( data)//id
        console.log(textStatus)
        console.log(jqXHR)
        console.log("#btn_"+data )
      
        
    }


0

试一下 在成功时不要传递任何参数

function abc(url)
{    
  $.ajax({
                url:'/account/search',
                type:'GET',
                success: update,
                error:function(error){
                    console.log(error);
                }
            });
}



function update(data){
            console.log(data)
            var q = data.length;
}

它以[object Object]的形式给出了一个列表。 - ssharma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接