jquery异步post,返回Html,返回的html里的jquery失效,怎么解决。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery异步post,返回Html,返回的html里的jquery失效,怎么解决。相关的知识,希望对你有一定的参考价值。

目前我的解决办法是:1.事件尽量使用live,或者写在html标签里,比如<div onclick="在这里写事件函数">点击</div>。2.重新注册.$GetScript("js路径");
目前第二种不适合,各个不同的区域异步都要重新注册,会造成混乱。所以目前用了第一种,觉得这种方法也欠佳,谁有更好的方法,如有说的详细点,我找了好多,也没有找到合适的方法,谢谢了。可以追加分数。
谁有更好的办法吗

参考技术A 将HTML和JS分开加载,写一个全局的方法,在获取html后查找其中的脚本文件重新加载

如:获取HTML并加载后
可以用以下方式加载JS
var _obj = ...;// 这里是你加载html的对象,没用jQuery
var scriptTags = _obj.getElementsByTagName("script");
for (var i = 0; i < scriptTags.length; i ++)
if(scriptTags[i].src == null || scriptTags[i].src == "")
new Funtion(scriptTags.innerHTML)();
else
var s = document.createElement("script");
s.src = scriptTags[i].src;
document.body.appendChild(s);


这样,所有的HTML中内嵌的js就都能执行了
参考技术B 一般都不把jquery写在返回的html里,一是jq分离慢,容易出错,二是没啥实在意义。
要么就写在当前,要么就重新getScript,再post本回答被提问者采纳
参考技术C 把返回的html里的js代码写在post回调函数里面 参考技术D POST方法有没有忘记加html表头?
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
还有传值是否写在send()里?
xmlhttp.send("fname=Bill&lname=Gates");
第5个回答  2015-10-16 返回的是你后台处理后返回的JSON字符串,jquery对象失效 可能是你语法有错误,而且你补粘贴代码我们都是猜测

jquery异步ajax与服务器通信过程中如何通过then方法链式传递多层数据

  我们在有些地方可能需要对服务器返回的参数做多步处理,或者很多复杂的操作必须等到服务器返回结果之后才会执行,那么我们可以用链式调用的then方法让这里做到更加易于扩展,也更加容易分离出各个功能模块。基本的方法如下。

 1 doSubmit: function(){ 
3
$.ajax({ 4 url: url, 5 type: ‘post‘, 6 data: $("#fm").serialize(), 7 dataType: ‘html‘ 8 }).then(function(data){ 9 toastr.error(" 提交成功", "操作成功"); 10 }, function(){ 11 toastr.error("提交失败", "操作失败"); 12 }); 13},

在这里对于返回的对象,可以在其他调用此方法的方法中如下处理:
this.doSubmit().then(function(data){
    console.log(data)
});
但在这里仅仅会进行打印,可是并不会是从服务器端传回的data,为了使这个data值能够传递至下面我们调用的地方,我们可以对上面的doSubmit做一点小小的处理,
这里我选择方法是采用$.Deferred(),有关于这个相关的概念和功能用法等可以参考阮一峰老师的博文已经阅览官方文档,这里就不一一介绍了。
对doSubmit()方法等改造如下:

doSubmit: function(){
    var dtd = $.Deferred();
    $.ajax({
        url: url,
        type: ‘post‘,
        data: $("#fm").serialize(),
        dataType: ‘html‘
    }).then(function(data){
        dtd.resolve(data);
    }, function(){
        toastr.error("提交失败", "操作失败");
        dtd.reject();
    });
    return dtd.promise();
},

这样就可以将data数据继续传递至调用该方法接下去执行的then()方法的回调函数中了。













以上是关于jquery异步post,返回Html,返回的html里的jquery失效,怎么解决。的主要内容,如果未能解决你的问题,请参考以下文章

怎么样将jquery $.post返回的数据return?

jquery异步ajax与服务器通信过程中如何通过then方法链式传递多层数据

javaweb局部刷新-ajax异步请求springMVC显示返回的jsp内容,代替iframe

jquery的post异步请求

现需要使用 jQuery 代码实现 ajax 请求,详细信息如下

jquery post返回呈现的html页面而不是sql结果