具有多种功能的jQuery插件 - php

我目前有一个基于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

jQuery Ajax加载仅适用于单个单词变量 - php

在我的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或使用具有标准感谢页…