我目前有一个基于Web的应用程序,该应用程序严格依赖第三方肥皂服务器来向网站提供信息。此应用程序几乎没有JavaScript,从jQuery UI中提取了一些元素,还有一些jQuery东西(为简单起见,比其他任何原因都重要)。
这个应用程序重新出现是为了增强功能,我的想法是基于我们依赖于数据的soap服务器,并且每个soap请求都需要往返,我们真的想减少对单个http请求的多次往返。因此,我的想法是使应用程序基于Ajax,并且仅更新用户希望看到的内容区域。
因此,我们有了基于php的服务器端库,该库使用soap获取信息,生成HTML并将数据发送给用户。现在有趣的事情开始了,我们想要获取此服务器端代码并将其模块化,并构建一个jQuery插件以与服务器端进行交互。我遇到麻烦的部分是如何在插件中具有多个功能(也许这是错误的方法,请纠正我),在此我可以随意调用每个功能。
基本思想如下:
soap服务器允许访问其所有基础表,每个表都有一个特定的WSDL,并定义了一组可用于每个表的功能。这些功能对于所有表都是相同的。
例如,我们有:
得到
getRecords
插
更新
删除
(function( $ ){
var methods = {
init: function( options){
//initialize the plugin
return this.each(function(){
var $this = $(this),
data = $this.data();
});
},
get : function(id){
var getQuery = 'sys_id='+id;
$.ajax({
type: "POST",
url: "get.php",
data: getQuery,
cache: false,
success: function(result){
if(result.error){
//error notify user error occured...
}else{
//success, update user ...
}
}
});
return false;
},
getRecords : function( ){
},
};
$.fn.myPlugin = function ( method ){
if( methods[ method ]){
return methods[ method ].apply(this, Array.prototype.slice.call( arguments, 1 ));
}else if(typeof method === 'object' || !method){
return methods.init.apply(this, arguments);
}else{
$.error('Method ' + method + 'does not exist on jQuery.ServiceNow');
}
};
})( jQuery );
因此,对soap服务器的get调用将需要一个ID来标识表中的哪个记录,getRecords调用接受一个查询并返回多个记录,insert插入一条记录,update更新一条记录等。
要执行get呼叫,我想做一些事情,例如:
$("#div").myPlugin.get(arguments);
结果将是返回id =“ div”的div,并返回定义为与此元素相关的插件myPlugin中的get Function的返回值。
这是正确的方法吗,有没有更好的方法,我都湿吗?这是我的第一个jQuery插件,我感觉自己来自面向对象的世界,在那里我习惯于构造事物,然后调用它们的函数/方法和/或使用字段。也许这就是我心态不佳的问题。
感谢评论/反馈!
我的想法是在jQuery插件中构造类似的东西,以便能够将这些调用传递给服务器,服务器上的php将根据所需资源确定WSDL位置。
参考方案
这是一种简单有效的方法,尽管使用已显示的代码,您可以像这样调用.get
:
$('#div').myPlugin('get', arguments);
这是jQuery UI使用的方法。因此,您可能希望研究其Widget Factory works的方式,甚至将其合并到您自己的代码中。
一种与您的示例类似的语法的替代方法:
var methods = {/* Methods same as above */};
$.fn.myPlugin = function() {
var Obj = function () {},
obj;
Obj.prototype = methods;
obj = new Obj();
obj.els = this;
return obj;
};
并这样称呼它:
$('#div').myPlugin().get(arguments);
而且,如果您需要在方法中引用this
来引用选定的jQuery对象(例如$('#div')
),请改用this.els
。
在我的PHP文件中,我将一些变量从输入框传递到链接中,该链接通过jQuery的ajax load函数在其URL中使用该变量加载页面。整个系统运行良好,但仅适用于单字变量。每当涉及到空格时,我的Ajax通话都会中断。我假设这是一个编码问题,但是我也有一些疑问。基本上,它归结为我的PHP文件中的这一行代码,这导致了混乱。是否有可能找出格式是否正确,或者为什么在多…
jQuery Ajax问题 - php在我的post.php中,我使用$ .ajax函数从其他文件加载一些html数据,将其称为form.html。我的问题是当添加到post.php的DOM中时,form.html是否可以访问post.php的POST / GET数据? 参考方案 为什么不使用$ .ajax发布到php文件,该文件返回html数据。这样,您可以在html中填写发布的数据。
jQuery Ajax和php类 - php我正在尝试学习如何在php中使用oop。我对jQuery也很陌生。是否可以向php类方法发出Ajax请求?我只将Ajax请求发送到专门用于此目的的文件,并且返回我需要的数据。 参考方案 简短答案:不可以。长答案:Ajax只是一个使用JavaScript从浏览器发出HTTP请求而无需离开页面的术语。您唯一可以“呼叫”的是URL。您可以编写PHP以根据URL来执…
jQuery:仅在有内容的情况下才从.load填充数据? - php我使用jquery .load函数查询将输出一些数据的php文件。现在有时脚本将不返回任何内容。在这种情况下,可以让load函数不将任何数据放入指定的div吗? (现在,它清除了div并仅放置了一个空白的白色区域。谢谢! 参考方案 尝试使用$ .get;$.get('<url>',{param1:true},function(…
PHP OOP概念付诸实践 - php目前,我所拥有的是一份以程序庄园形式编写的审查表。我想更改一些内容,并希望在此过程中,根据过去的经验,在OOP中,网站的整个审核部分会更好。数据流如下:HTML表单=>提交=> jQuery验证=>? => PHP验证=>添加记录我的问题是要了解将POST数据传递给类的正确方法是使用AJAX / jQuery或使用具有标准感谢页…