首页 后端开发 php教程 实习小结十二:Ajax的get函数使用实例

实习小结十二:Ajax的get函数使用实例

Jul 30, 2016 pm 01:30 PM
gt post this

好久没来写博客了,并不是懈怠了,而是最近在写一个Post文章管理的大module,由于php和zend没怎么学,所以花费了大概一周的时候,才实现了增删改查功能,最近在改进模块功能,因为那里面的代码量实在太大,具体的要想一想才能写博客,这次写的是针对修改文章状态,使用ajax实现的,以前一直不知道ajax的好处,这次具体使用了,才算知道了一些皮毛,接下来,进入正题。

首先贴一下ajax代码:

<code><span>script</span>><span>
$(<span><span>function</span><span>()</span> {</span>    $(<span>".post-list-table .check"</span>).click(<span><span>function</span><span>()</span> {</span><span>var</span> post_id = $(<span>this</span>).parent().attr(<span>"alt"</span>);
        <span>var</span> status = $(<span>this</span>).attr(<span>"alt"</span>);
        $.get(<span>"/post/operate/"</span>+ post_id +<span>"/?status="</span>+ status, <span><span>function</span><span>(ret)</span> {</span>
            console.log(ret);
            <span>if</span>(ret[<span>1</span>] == <span>1</span>) {
                $(<span>"table tbody .status-"</span>+ post_id).html(<span>"Published"</span>);
            } <span>else</span><span>if</span>(ret[<span>1</span>] == -<span>1</span>) {
                $(<span>"table tbody .status-"</span>+ post_id).html(<span>"Rejected"</span>);
            } <span>else</span> {
                $(<span>"table tbody .status-"</span>+ post_id).html(<span>"Draft"</span>);
            }
        });
    });

    $(<span>".post-list-table .delete"</span>).click(<span><span>function</span><span>()</span> {</span><span>if</span>(confirm(<span>'确认删除?'</span>)) {
            <span>var</span> url = $(<span>this</span>).attr(<span>'url'</span>);

            $.getJSON(url, <span><span>function</span><span>(ret)</span> {</span>console.log(ret);
                <span>if</span>(ret[<span>0</span>] == <span>true</span>) {
                    $(<span>'.delete[url="'</span>+url+<span>'"]'</span>).parents(<span>'tr'</span>).remove();
                }
            });
        }
    });
})
</span><span><span>script</span>></span></code>
登录后复制

从代码看出来,实现的是更改状态和删除两个功能,分别来自不同的action,接下来贴controller里面的action。

<code><span>public</span><span><span>function</span><span>operateAction</span><span>()</span>
    {</span><span>if</span>(!<span>$this</span>->userHasPermission(<span>'ADMIN'</span>, <span>'EDIT_REVIEW'</span>))
        {
            <span>return</span><span>$this</span>->requirePermission(<span>'ADMIN'</span>, <span>'EDIT_REVIEW'</span>);
        }
        <span>$ret</span> = <span>false</span>;
        <span>$request</span> = <span>$this</span>->getRequest();

        <span>$log_table</span> = <span>$this</span>->getPostLogTable();

        <span>$user_service</span> = <span>$this</span>->getServiceLocator()->get(<span>'UserService'</span>);
        <span>$curr_user</span> = <span>$user_service</span>->getCurrentUser();

        <span>$post_id</span> = <span>$this</span>->params()->fromRoute(<span>'id'</span>, <span>null</span>);

        <span>$post</span> = <span>$this</span>->getPostTable()->getPostById(<span>$post_id</span>);

        <span>$from_status</span> = <span>$post</span>[<span>'post_status'</span>];

        <span>$status</span> = <span>$request</span>->getQuery(<span>'status'</span>, <span>null</span>);
        <span>$log_row</span> = <span>array</span>();
        <span>if</span> (!is_null(<span>$status</span>)) {

            <span>if</span>(<span>$post</span>[<span>'post_status'</span>] != <span>$status</span>) {
                <span>$ret</span> = <span>$this</span>->getPostTable()->checkStatus(<span>$post</span>[<span>'id'</span>], (int)<span>$status</span>);
                <span>//var_dump($ret);exit();</span><span>if</span> (<span>$ret</span>) {
                    <span>$log_row</span>[<span>'post_id'</span>] = <span>$post_id</span>;
                    <span>$log_row</span>[<span>'user_id'</span>] = <span>$curr_user</span>->id;
                    <span>$log_row</span>[<span>'user_name'</span>] = <span>$curr_user</span>->username; 
                    <span>$log_row</span>[<span>'date'</span>] = date(<span>'y-m-d'</span>,time());
                    <span>$log_row</span>[<span>'from_status'</span>] = <span>$from_status</span>;
                    <span>$log_row</span>[<span>'to_status'</span>] = <span>$status</span>;

                    <span>$log_table</span>->addRows(<span>$log_row</span>);
                }
            }
            <span>$ret</span> = <span>true</span>;
        }
        <span>$jsonModel</span> = <span>new</span> JsonModel(<span>array</span>(<span>$post_id</span>, <span>$ret</span> ? (int)<span>$status</span> : <span>$ret</span>));
        <span>//var_dump($jsonModel);exit();</span><span>return</span><span>$jsonModel</span>;
    }

    <span>public</span><span><span>function</span><span>deletePostAction</span><span>()</span>{</span><span>if</span>(!<span>$this</span>->userHasPermission(<span>'ADMIN'</span>, <span>'VIEW_PRODUCT'</span>))
        {
            <span>return</span><span>$this</span>->requirePermission(<span>'ADMIN'</span>, <span>'VIEW_PRODUCT'</span>);
        }
        <span>$post_id</span> = (int) <span>$this</span>->params()->fromRoute(<span>'post_id'</span>, <span>0</span>);
        <span>$ret</span> = <span>false</span>;
        <span>if</span> (<span>$post_id</span>) {
            <span>$table</span> = <span>$this</span>->getPostTable();
            <span>$table</span>->deleteRowById(<span>$post_id</span>);
            <span>$this</span>->layout()->selectedTab = <span>'post-list'</span>;
            <span>$ret</span> = <span>true</span>;
        }

        <span>return</span><span>new</span> JsonModel(<span>array</span>(<span>$ret</span>));
    }</code>
登录后复制

两个action的路由设置就不写了,也没有具体的phtml网页,只是实现功能而已。

ajax代码中,通过.get(url,data)函数,注意,此处的data是指action或者phtml返回的JsonModel的array数组,是返回的所有数据。实际上,在click之后,get的第一个参数,就执行了action,顺便获取了数据,然后根据参数,执行操作,这是非常方便的。

贴一下图吧,虽然看不出效果:
点击绿勾的话,status就是变成Published,点击红叉,就会变成Rejected,红垃圾箱,就是点击删除。
右侧三个图标就是ajax实现的

版权声明:本文为博主原创文章,未经博主允许不得转载。

以上就介绍了实习小结十二:Ajax的get函数使用实例,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

华为GT3 Pro和GT4的差异是什么? 华为GT3 Pro和GT4的差异是什么? Dec 29, 2023 pm 02:27 PM

许多用户在选择智能手表的时候都会选择的华为的品牌,其中华为GT3pro和GT4都是非常热门的选择,不少用户都很好奇华为GT3pro和GT4有什么区别,下面就就给大家介绍一下二者。华为GT3pro和GT4有什么区别一、外观GT4:46mm和41mm,材质是玻璃表镜+不锈钢机身+高分纤维后壳。GT3pro:46.6mm和42.9mm,材质是蓝宝石玻璃表镜+钛金属机身/陶瓷机身+陶瓷后壳二、健康GT4:采用最新的华为Truseen5.5+算法,结果会更加的精准。GT3pro:多了ECG心电图和血管及安

修复:截图工具在 Windows 11 中不起作用 修复:截图工具在 Windows 11 中不起作用 Aug 24, 2023 am 09:48 AM

为什么截图工具在Windows11上不起作用了解问题的根本原因有助于找到正确的解决方案。以下是截图工具可能无法正常工作的主要原因:对焦助手已打开:这可以防止截图工具打开。应用程序损坏:如果截图工具在启动时崩溃,则可能已损坏。过时的图形驱动程序:不兼容的驱动程序可能会干扰截图工具。来自其他应用程序的干扰:其他正在运行的应用程序可能与截图工具冲突。证书已过期:升级过程中的错误可能会导致此issu简单的解决方案这些适合大多数用户,不需要任何特殊的技术知识。1.更新窗口和Microsoft应用商店应用程

python requests post如何使用 python requests post如何使用 Apr 29, 2023 pm 04:52 PM

python模拟浏览器发送post请求importrequests格式request.postrequest.post(url,data,json,kwargs)#post请求格式request.get(url,params,kwargs)#对比get请求发送post请求传参分为表单(x-www-form-urlencoded)json(application/json)data参数支持字典格式和字符串格式,字典格式用json.dumps()方法把data转换为合法的json格式字符串次方法需要

浅析php中POST方法带参数跳转页面 浅析php中POST方法带参数跳转页面 Mar 23, 2023 am 09:15 AM

对于PHP开发者来说,使用POST带参数跳转页面是一项基本技能。POST是HTTP中一种发送数据的方法,它可以通过HTTP请求向服务器提交数据,跳转页面则是在服务器端进行页面的处理和跳转。在实际开发中,我们经常需要使用POST带参数来跳转页面,以达到一定的功能目的。

php怎么判断post有没有提交 php怎么判断post有没有提交 Mar 21, 2023 pm 07:12 PM

PHP是一种广泛使用的服务器端脚本语言,它可以用于创建交互式和动态的Web应用程序。在开发PHP应用时,我们通常需要通过表单将用户输入数据提交给服务器端处理。然而,有时候我们需要在PHP中判断是否有表单数据被提交,这篇文章将介绍如何进行这样的判断。

java如何发起http请求调用post与get接口 java如何发起http请求调用post与get接口 May 16, 2023 pm 07:53 PM

一、java调用post接口1、使用URLConnection或者HttpURLConnectionjava自带的,无需下载其他jar包URLConnection方式调用,如果接口响应码被服务端修改则无法接收到返回报文,只能当响应码正确时才能接收到返回publicstaticStringsendPost(Stringurl,Stringparam){OutputStreamWriterout=null;BufferedReaderin=null;StringBuilderresult=newSt

NGINX反向代理对HTML页面的POST请求返回405怎么解决 NGINX反向代理对HTML页面的POST请求返回405怎么解决 May 22, 2023 pm 07:49 PM

实现如下:server{listen80;listen443ssl;server_namenirvana.test-a.gogen;ssl_certificate/etc/nginx/ssl/nirvana.test-a.gogen.crt;ssl_certificate_key/etc/nginx/ssl/nirvana.test-a.gogen.key;proxy_connect_timeout600;proxy_read_timeout600;proxy_send_timeout600;c

PHP跳转页面并携带POST数据的实现方法 PHP跳转页面并携带POST数据的实现方法 Mar 22, 2024 am 10:42 AM

PHP是一种广泛应用于网站开发的编程语言,而页面跳转并携带POST数据是在网站开发中常见的需求。本文将介绍如何实现PHP页面跳转并携带POST数据,包括具体的代码示例。在PHP中,页面跳转一般通过header函数实现。如果需要在跳转过程中携带POST数据,可以通过以下步骤完成:首先,创建一个包含表单的页面,用户在该页面填写信息并点击提交按钮。在表单的acti

See all articles