html()方法避免写

时间:2014-04-13 13:08:16

标签: javascript jquery

我对数据库的查询是使用AJAX,当你点击一个链接时,html会从数据库中返回一个列表。 我的javascript代码:

$(document).ready(function() {
    $('.gnr a').on('click', function(){

     var title = $(this).attr('title');
    $.ajax({

           async:true,
           type: "POST",
           dataType: "json",
           contentType: "application/x-www-form-urlencoded",
           url:"recibe.php", 
           data:"titulo="+title,
           beforeSend:inicioEnvio, 
           success:llegadaDatos,
           timeout:4000,
           error:problemas
         }); 
    });
});

function inicioEnvio()
{
$(".lista-usuario").html('<img src="loading.gif">');
}
function llegadaDatos(respuesta) {

   $(".lista-usuario").html(respuesta.datos1);
   $(".lista_usuario").html(respuesta.datos2);
   $("#art-list").html(respuesta.datos3);       
}
function problemas(){$(".lista-usuario").text('Problemas en el servidor.');}

我的功能有问题 html(respuesta.datos1)和html(respuesta.datos2)显然存在冲突。有时候&#34; data1&#34; = null其他时间&#34; data2&#34; = NULL。请问如何纠正这个问题?

4 个答案:

答案 0 :(得分:0)

怎么样:

function llegadaDatos(respuesta) {
   var usuario = resupesta.datos1 || respuesta.datos2;

   if (usuario) {
       $(".lista-usuario").html(usuario);
   }

   $("#art-list").html(respuesta.datos3);       
}

答案 1 :(得分:0)

试试这个:

    $.ajax({

       async:false,
       type: "POST",
       dataType: "json",
       contentType: "application/x-www-form-urlencoded",
       url:"recibe.php", 
       data:"titulo="+title,
       beforeSend:inicioEnvio, 
       success:llegadaDatos,
       timeout:4000,
       error:problemas
     });

“async:false”可以解决您的问题。

答案 2 :(得分:0)

您需要将响应作为参数传递给successhandler

$.ajax({

       async:true,
       type: "POST",
       dataType: "json",
       contentType: "application/x-www-form-urlencoded",
       url:"recibe.php", 
       data:"titulo="+title,
       beforeSend:inicioEnvio, 
       success:llegadaDatos(response), //<< !-important, your function expects an argument you didnt pass
       timeout:4000,
       error:problemas
     }); 
});

答案 3 :(得分:0)

if(typeof respuesta.datos1 != undefined){
     $(".lista-usuario").html(respuesta.datos1);
}