> 백엔드 개발 > PHP 튜토리얼 > 인턴십 요약 12: Ajax get 함수 사용 예

인턴십 요약 12: Ajax get 함수 사용 예

WBOY
풀어 주다: 2016-07-30 13:30:22
원래의
1190명이 탐색했습니다.

오랜만에 블로그를 게을리 하는 것은 아니지만 최근에는 PHP와 zend에 대해 많이 배우지 않았기 때문에 Post 기사 관리에 대한 큰 모듈을 작성하고 있습니다. 구현하는데 일주일정도 걸렸는데 최근에 코드량이 너무 많아서 추가, 삭제, 수정, 확인 기능이 개선되었습니다. 기사 상태를 수정하고 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>
로그인 후 복사

코드를 보면 상태 변경과 삭제라는 두 가지 기능이 구현되어 있는 것을 알 수 있는데, 이는 서로 다른 작업에서 비롯됩니다. 컨트롤러에 작업을 붙여넣습니다.

<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>
로그인 후 복사

두 액션에 대한 라우팅 설정을 작성하지 않을 것이며, 특정 phtml 페이지도 없고 단지 기능만 구현하겠습니다.

ajax 코드에서 .get(url,data) 함수를 통해 여기의 데이터는 action이나 phtml에서 반환된 JsonModel의 배열 배열을 의미하며, 이것이 반환되는 모든 데이터라는 점에 유의하세요. 실제로 클릭 후 get의 첫 번째 매개변수가 액션을 실행하고, 그런데 데이터를 획득한 후, 매개변수에 따라 작업을 수행하게 되므로 매우 편리합니다.

효과가 보이지 않지만 사진을 게시하세요.
녹색 체크 표시를 클릭하면 상태가 게시됨으로 변경됩니다. 빨간색 십자가를 클릭하면 거부됨으로 변경됩니다. 빨간색 휴지통을 클릭하면 삭제를 클릭하게 됩니다.
인턴십 요약 12: Ajax get 함수 사용 예

저작권 표시: 이 글은 해당 블로거의 원본 글이므로 블로거의 허락 없이 복제할 수 없습니다.

위에서는 인턴십 요약 12가지를 소개했습니다. 내용의 측면을 포함하여 Ajax get 함수의 사용 예가 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿