我正在研究一个继承的未完成的应用程序,它正在使用一些原型功能进行ajax调用,然后我将JQuery用于其他目的。在某个时刻,我有一个不兼容的问题,我使用jQuery $ .noConflict()选项解决了所以我保留原型的东西,因为一切都在所有浏览器上顺利运行...除了我试图在IE上测试它的那一天(第8版)。它一直显示堆栈溢出错误,应用程序没有正常响应。我确实通过添加<meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
来改变标题以防万一,但经过一些研究后,似乎问题是由IE对原型库的不当处理引起的。所以我决定将所有内容都切换到Jquery。使用原型的唯一剩余代码如下:
function ajaxAll() {
$('pro_search_form').onsubmit = function () {
initornot();
inline_results();
putmks();
return false;
}
}
function initornot() {
var $elem = $('conteneur');
if($elem.getStyle('display') == 'none') { setTimeout("init();", 77); }
else init();
}
function inline_results() {
new Ajax.Updater ('pro_description_div', base_url+'main/ajaxsearch',
{
method:'post',
postBody:'magasin=true<ype='+$F('ltype')+'&lieu='+$F('lieu')+'&keywords='+$F('keywords')
});
new Effect.Appear('conteneur', {duration: 2.0});
}
function putmks()
{
var url = base_url+'main/prosearch';
var myAjax = new Ajax.Request(
url,
{
method: 'post',
postBody:'magasin=true<ype='+$F('ltype')+'&lieu='+$F('lieu')+'&keywords='+$F('keywords')
});
}
有关如何转换它的任何想法,以便我可以使用JQuery语法获得相同的行为吗?
基本上第一个函数ajaxAll()捕获一个表单的提交动作(pro_search_form)然后调用函数inline_results()来使用post方法为ajax调用和putmks()函数更新一个带有出现效果的div在发送相同的后期数据参数之后,它基本上会评估控制器在url'main / prosearch'处生成的返回的javascript内容(此功能是最关键的部分,因为它利用原型能力自动评估任何javascript,只要它有正确的标题文本/ javascript)。 第三个函数initornot()只是在执行操作之前检查div的display属性。
N.B:使用的Prototype版本是1.5.0,Jquery是1.7.1
请帮忙
答案 0 :(得分:1)
是的,我终于完成了以下代码改进了一点:
$(document).ready(function(){
$("#pro_search_form").submit(function(e) {
allResults();
e.preventDefault();
});
function allResults() {
$.post(base_url+"main/ajaxsearch", {'magasin':true, 'ltype':$("#ltype").val(), 'lieu':$("#lieu").val(), 'keywords':$("#keywords").val()}, function(results){
$("#pro_description_div").html(results);
$("#conteneur").fadeIn("slow");
});
var elem = $("#conteneur").css("display");
if (elem == 'none') { setTimeout("init()", 84); }
else {init();}
$.post(base_url+"main/prosearch", {'magasin':true, 'ltype':$("#ltype").val(), 'lieu':$("#lieu").val(), 'keywords':$("#keywords").val()}, function(results){
val(results);
});
}
})
我知道,我正在回答我自己的问题,但我只想将解决方案提供给其他人,以防他们遇到我的问题。
感谢prodigitalson的建议;)