Jquery使用ajax后,是否可以使用ajax中的数据问题总结

关于Jquery使用ajax回调后,
1.是否可以使用回调数据data的问题
2.是否可以调用在ajax中新建的html标签的问题
此为个人开发中遇到的问题,特来总结。

问题1:Jquery是否可以调用在js中新建的html标签的问题

.在html中分页显示中,使用前端Jquery中的ajax添加分页的标签

jax({
            type: "post",
            url: "showUserByPage",
            data: {
                currPage: targetP,
                userName: $("#userNameTip").val(),
            },
            success: function (data) {
				var pageGuide=
			                "<ul id='links' class='pagination'>"+
			                "<li class='page-item'> <a id='firstP' class='page-link' href='javascript:void(0)'>首页</a> </li>"+
			                "<li class='page-item'> <a id='preP' class='page-link' href='javascript:void(0)'>上一页</a></li>"+
			                "<li class='page-item'> <a id='nextP' class='page-link' href='javascript:void(0)'>下一页</a></li>"+
			                "<li class='page-item'> <a id='lastP' class='page-link' href='javascript:void(0)'>尾页</a></li>"+
			                "</ul>";
			            
			    $("#pageGuideSpan").prepend(pageGuide);

其中,pageGuide是html页面的一个标签

如果在ajax外调用下一页标签(在ajax中动态添加的标签)的操作,操作将无法执行。

    $.ajax({
   		 success:function(data){
   				 ...
   				 ...
   		 },
   		 error:function(){}});
    
	 //使用下一页a标签
    $("#nextP").click(function () {
        alert("123");
        showUsers(nextP);
    });

但是直接在success回调函数中调用下一页标签,就可以成功

    $.ajax({
   		  success:function(data){
   				 ...
   				 ...
   				 //直接在回调函数里使用 $("#nextP")
   				 $("#nextP").click(function () {
        			alert("123");
        			showUsers(nextP);
    });
   		 },
   		 error:function(){}});
    
	

原因:
  ajax回调数据,此时 id=‘nextP’ 的下一页标签数据还没回调,在ajax外使用下一页标签,无法将click事件绑定到该标签上
  如果在ajax内部的success回调函数内使用,就可在标签数据回调后绑定事件

  如果想在ajax外部操作JS语句,可以在ajax内部使用onclick事件,在onclick里使用function函数nextPage(),因为此时在ajax回调时已经绑定了onclick事件:即调用nextPage函数

 "<li class='page-item'> <a id='nextP' class='page-link' href='javascript:void(0)' οnclick='nextPage()'>下一页</a></li>"+

然后在ajax外面,定义nextPage函数

$.ajax({
   		 success:function(data){
   				 ...
   				 ...
   		 },
   		 error:function(){}});
    
 function nextPage(){
        $("#links").remove();
        showUsers(nextP)
    }

问题2:是否可以使用ajax回调数据的data的问题

$.ajax执行成功回调函数success的数据data,在函数外是不能直接使用的

var pageBean
$.ajax({
   		 success:function(data){
   				pageBean=data;
   				 ...
   				 ...
   		 },
   		 error:function(){}});
 alert(pageBean.currPage)

定义的全局变量pageBean,在alert中无法调用

但是在事件中是可以调用的

var pageBean
$.ajax({
   		 success:function(data){
   				pageBean=data;
   				 ...
   				 ...
   		 },
   		 error:function(){}});
    
   //注意:#addUserBtn标签是在html中定义好的,不是JS动态添加的。如果是在JS中动态添加则会失败,因为不在ajax内部绑定事件,此时数据还没有回调。
  $("#addUserBtn").click(function(){
        alert(pageBean.currPage)
    })

个人理解:
  事件还没触发,执行顺序在ajax之后,此时ajax已经回调了数据,所以可以调用。如果不在事件中,直接指向alert语句,此时数据还没回调,pageBean未初始化。

注意:
  addUserBtn标签是在html中定义好的,不是JS动态添加的。
  如果该标签是在JS中动态添加则会失败。因为不在ajax内部绑定事件,此时数据还没有回调(即回到了问题1)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值