在Ajax响应中包含JavaScript(jQuery)代码是否是一种好习惯? 它可以工作,但是我觉得这不是最好的方法(而且我认为这是一个糟糕的设计,使事情难以调试)。
是否应该在对服务器进行Ajax调用之前加载所有JavaScript?
最好的方法是什么? 一个简单的例子会有所帮助!
在Ajax响应中包含JavaScript(jQuery)代码是否是一种好习惯? 它可以工作,但是我觉得这不是最好的方法(而且我认为这是一个糟糕的设计,使事情难以调试)。
是否应该在对服务器进行Ajax调用之前加载所有JavaScript?
最好的方法是什么? 一个简单的例子会有所帮助!
AJAX响应中的Javascript代码存在许多问题:
1)无法确定Javascript代码的加载时间。 不要从服务器动态加载js代码。 脚本加载属性无法在所有浏览器中很好地实现。
2)动态CSS加载/动态加载的js上的应用无法及时同步,再次出现计时问题。
3)闭包问题-通常,响应函数是$ .ajax函数的子级(回调),再次$ .ajax是事件处理程序的子级。 因此最好只在第一次加载浏览器时放入js。 如果变量放置不正确,则可能会遇到关闭问题。
因此,基本上, 仅将响应解析代码放在function(response){}中,例如XML,JSON,Text,HTML ...
请记住,在回调函数中填充大量代码是一种不良做法。
我认为您的工程本能是对的。 将您的代码放入JavaScript文件中,对其进行压缩/最小化/打包,然后将其提供一次。 然后,浏览器可以对其进行缓存。 将ajax调用限制为从服务器而不是代码中检索数据或标记。
... 95%的时间。 我愿意打赌, 有时候您可以证明奇怪的代码作为有效负载,但是我还没有这样做。
我认为可以加载少量但不是很多脚本代码以及ajax响应。
例如,我们使用MVC3及其jquery非侵入式验证插件。 我们的某些表单通过ajax加载了部分视图。 它们加载后,为了使客户端验证再次起作用,我们必须运行以下这行jQuery:
$.validator.unobtrusive.parse('form');
像这样的东西我不介意在局部视图中使用,尽管它可以很容易地在$ .ajax.success函数中出现。