在本文中,我们将详细介绍javascript–RJS:Ajaxifiedselect_tag的各个方面,同时,我们也将为您带来关于Ajax,UTF-8还是GB2312eval还是execScript_
在本文中,我们将详细介绍javascript – RJS:Ajaxified select_tag的各个方面,同时,我们也将为您带来关于Ajax,UTF-8还是GB2312 eval 还是execScript_javascript技巧、javascript - ajaxfileupload插件 ajaxstart、javascript eval()应用实例 select_javascript技巧、javascript – Angularjs select2 Ajax绑定的有用知识。
本文目录一览:- javascript – RJS:Ajaxified select_tag
- Ajax,UTF-8还是GB2312 eval 还是execScript_javascript技巧
- javascript - ajaxfileupload插件 ajaxstart
- javascript eval()应用实例 select_javascript技巧
- javascript – Angularjs select2 Ajax绑定
javascript – RJS:Ajaxified select_tag
由于我没有在last question上得到预期的答案,我会尝试简化和缩小我的问题:
How can I build a dropdown-menu that uses AJAX (no submit-button) to call the show action of a certain controller?
给出以下内容:
模型关联是类别HABTM项目,因此下拉菜单包含所有类别名称.
应该实现下拉菜单的视图部分.下拉菜单下方是一个项目列表,应根据下拉菜单中的选择进行更改:
<!-- placeholder for AJAX dropdown menu -->
<!-- list of projects related to categories chosen by the select tag -->
<ul>
<% @projects.each do |_project| %>
<li>
<%= link_to(_project.name, _project) %>
</li>
<% end %>
</ul>
具有应该调用的show-action的Categories控制器:
class CategoriesController < ApplicationController
def show
# params[:id] should be the choice the user made in the dropdown menu
@category = Category.find(params[:id])
@projects = @category.projects.find(:all)
respond_to do |format|
format.html # show.html.erb
format.js # needed for ajax response?
end
end
def index
@projects = Category.find(params[:id]).projects.find(:all)
@category = @project.categories.first
respond_to do |format|
format.html # index.html.erb
end
end
end
在Categories控制器中调用show-action的路径:
category GET /categories/:id {:controller=>"categories", :action=>"show"}
你会如何实现这个?任何帮助都是非常苛刻的!
解决方法:
这个怎么样:
<% form_for :category, :url => { :action => "show" } do |f| %>
<%= select_tag :id, options_from_collection_for_select(Category.find(:all), :id, :name),
{ :onchange => "this.form.submit();"} %>
<% end %>
这将调用传统的html调用,因此它将刷新整个页面(并响应format.html).
然后控制器将通过提交的[:id]找到类别
@category = Category.find(params[:id])
Ajax,UTF-8还是GB2312 eval 还是execScript_javascript技巧
两个问题:
第一题:
xmlhttp 的 responseText 默认总是utf-8的编码,前段时间为了以最小成本解决这个问题,索性整个项目用utf-8编码。网上解决的方法不多,而且都是比较乱七八糟的,不喜欢。又不能以后所有都用utf-8。
第二题:
xmlhttp 载入页的javascript脚本,不能执行。事件的驱动却仍然可用,前段时间为了回避这东西,干脆把脚本全写一起了。恶心,总这么干,每次都要载入几百K的js文件,恶心。
那么,现在有时间了,最用正统的方式解决一下,
xmlhttp ,本来就是用来操作xml的,responseText 返回的东西,使用网上的二进制硬性编码把UTF-8改成GB2312编码的方法自然不可靠,而且如果处理其它的编码则无能为力。使用的 responseXML 返回的 IXMLHTTPRequest 对像,依赖xml的编码声明,自然不可能乱码。没道理不用。
这里将是我需要的html文本,
]]>
脚本可以这么写一行;
returnValue = xmldom.documentElement.text;
returnValue 即是我所需要的html文本,相对硬性的以字节流去改编码,何乐而不为呢?
第一题基本解决,管你用什么编码,utf-8,gb2315.gbk,还是8859-1 改下文档声明即可。
第一个问题即然以经用了xml,那么第二个问题也很容易解决,简单的分析一下我们的需求,执行一个页面的脚本,由其是在载入的页上,普遍是在两个地方,载之HTML之前的声明和载入完成时的调用。至于页面中的使用,用DHTML的事件驱动即可,那么变更一下XML的结构。
// 这里的脚本相当于写在head里;
]]>
HtmlCode
]]>
// 这里的脚本相当于写在 body 后的;
]]>
处理脚本,试着写这几行;
BeginScript = xmldom.documentElement.selectSingleNode("onStart").text;
htmlCode = xmldom.documentElement.selectSingleNode("body").text;
endScript = xmldom.documentElement.selectSingleNode("onEnd").text;
IE下似乎没问题,但是firefox下报错,可恨的firefox 下竟然是 textContent , selectSingleNode方法也不起作用, 浏览器识别的方法,随处抄一个就好了。现在我只去管 IE 和 Firefox ,我机器上也只有这两个,再改下代码;
以下的前三行,是从网易博客上抄下来的。有问题找网易好了。实在懒得自己再写,更别提让我上网找了。
var isIE=(document.all&&document.getElementById&&!window.opera)?true:false;
var isMozilla=(!document.all&&document.getElementById&&!window.opera)?true:false;
var isOpera=(window.opera)?true:false;
if(isIE){
BeginScript = xmldom.documentElement.getElementsByTagName("onStart").item(0).text;
htmlCode = xmldom.documentElement.getElementsByTagName("body").item(0).text;
endScript = xmldom.documentElement.getElementsByTagName("onEnd").item(0).text;
}else{
BeginScript = xmldom.documentElement.getElementsByTagName("onStart").item(0).textContent;
htmlCode = xmldom.documentElement.getElementsByTagName("body").item(0).textContent;
endScript = xmldom.documentElement.getElementsByTagName("onEnd").item(0).textContent;
}
完成。剩下的,就是怎么去执行。
需要动态的执行一段脚本,能常会到三种方法。
a) JavaScript 中 Global 对像的 eval() 方法;
b) DHTML window 中的 execScript() 方法;
c) JavaScript 中的 new Function(); 对像;
三种方法,各有优劣,
第一种,脚本的上下文关系使用调用时的上下文,明显的存在作用域问题,执行后的作用域仅在调用的函数或方法体内。恶心的问题;
第二种,本身在DHTML的顶层对像window 上执行,不存在作用域问题,但是execScript() 方法,却存在浏览器兼容问题。只是IE的专有方法。在Firefox 上即无法使用;
第三种,除了使用不便以外,必竟是用来声明一个方法的,如只需要声明一个变量的话,也是个很烦人的问题。
如果不存在浏览器兼容问题的考虑,那么使用第二种是最好的选择。
第三种,不作考虑。
第一种,若可以解决作用域问题,则是最好的。
我想到的方法如下;
我们在网页里声明一个变量,
即 var author = "戏得散人";
或声明一个函数。
即:
function getBlogUrl(){
return author + "的博客地址: http://shizhong8841.blog.163.com";
}
在这个时候,我们相当于
window.author = "戏得散人";
window.getMyBlogUrl = function(){
return this.author + "的博客地址:http://shizhong8841.blog.163.com";
}
那么,我们只要稍微扩展一下window对像即可。
window.runScript = function(str){
eval(str);
}
神奇的 this 接下来,只要以 this.a=0; 或 this.funName = function(arg0){}; 这种方式编写脚本,并调用 runScript(str); 方法,则相当于在页面中定义全局的属性和方法,即可以辟开作用域问题,达到我们的目的。
现在,全部问题解决,并且在 InternetElpxerer 6.0 和 Firefax 2.0 下全部通过测试。写的代码太乱,就不往上贴了,省的丢人,但是思想,应该还是正确的。
更多的问题,以后再说。
javascript - ajaxfileupload插件 ajaxstart
描述你的问题
使用插件上传图片时,显示和隐藏的gif图片有问题。
上传第一张图时
上传第二张图时
上传第三张图时
-
贴上相关代码
立即学习“Java免费学习笔记(深入)”;
function ajaxFileUpload(a){ if(a == 0){ $$("#loading_upload").ajaxStart(function(){ $$(this).show(); }).ajaxComplete(function(){ $$(this).hide(); }); }else{ $$("#loading_upload"+a).ajaxStart(function(){ $$(this).show(); }).ajaxComplete(function(){ $$(this).hide(); }); }
3.loading_upload+a就是对应每个位置的id号,为什么我再上传第二张图片的时候,第一张图片的gif也显示了出来,上传第三张图片时,一二张的gif也显示了出来?该如何修改?
回复内容:
描述你的问题
使用插件上传图片时,显示和隐藏的gif图片有问题。
上传第一张图时
上传第二张图时
上传第三张图时
-
贴上相关代码
立即学习“Java免费学习笔记(深入)”;
function ajaxFileUpload(a){ if(a == 0){ $$("#loading_upload").ajaxStart(function(){ $$(this).show(); }).ajaxComplete(function(){ $$(this).hide(); }); }else{ $$("#loading_upload"+a).ajaxStart(function(){ $$(this).show(); }).ajaxComplete(function(){ $$(this).hide(); }); }
3.loading_upload+a就是对应每个位置的id号,为什么我再上传第二张图片的时候,第一张图片的gif也显示了出来,上传第三张图片时,一二张的gif也显示了出来?该如何修改?
Whenever an Ajax request completes, jQuery triggers the ajaxComplete event. Any and all handlers that have been registered with the .ajaxComplete() method are executed at this time.
via https://api.jquery.com/ajaxComplete/
javascript eval()应用实例 select_javascript技巧
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
javascript – Angularjs select2 Ajax绑定
HTML:
<div> <input type="text"ui-select2="multi" ng-model="multi2Value" multiple="multiple" /> </div>
JS:[更新]
$scope.multi = { ajax: { headers: { 'Content-Type': 'application/json' },url: "http://localhost:63591/Lookup?lookup=Lookup&key=acc",data: function (term,page) { return {}; },results: function (data,page) { console.log(data); return {results: data.LookupValue}; } }
我的回答是
{ "LookupValue" : [ "AAAA","BBBB","CCC" ] }
但在控制台中,我看到了响应.但它没有加载到选择下拉列表中.
我的代码出了什么问题.任何人都可以帮助我吗?谢谢
解决方法
<select ui-select2 ng-model="multi2Value" data-placeholder="Pick a Lookup"> <option value=""></option> <option ng-repeat="lookup in listLookup " value="{{lookup.value}}">{{lookup.text}}</option> </select>
如果listLookup的项目,值和文本是查找的一些虚拟属性,则查找列表中的每个项目都在哪里…
看看this article,希望你明白这个想法.
我们今天的关于javascript – RJS:Ajaxified select_tag的分享就到这里,谢谢您的阅读,如果想了解更多关于Ajax,UTF-8还是GB2312 eval 还是execScript_javascript技巧、javascript - ajaxfileupload插件 ajaxstart、javascript eval()应用实例 select_javascript技巧、javascript – Angularjs select2 Ajax绑定的相关信息,可以在本站进行搜索。
本文标签: