>백엔드 개발 >PHP 튜토리얼 >ajax 호출은 PHP 인터페이스를 반환하고 json 데이터를 반환합니다. ajax jsonp ajax json 인스턴스 ajax는 배경 json 번호를 가져옵니다.

ajax 호출은 PHP 인터페이스를 반환하고 json 데이터를 반환합니다. ajax jsonp ajax json 인스턴스 ajax는 배경 json 번호를 가져옵니다.

WBOY
WBOY원래의
2016-07-29 08:49:211191검색

php 코드는 다음과 같습니다.

<span><?php
</span>header(<span>'Content-Type: application/json'</span>);
    header(<span>'Content-Type: text/html;charset=utf-8'</span>);

    <span>$email </span><span>= </span><span>$_GET[</span><span>'email'</span><span>]</span>;

    <span>$user </span><span>= </span><span>[]</span>;

    <span>$conn </span><span>= @</span>mysql_connect(<span>"localhost"</span>,<span>"Test"</span>,<span>"123456"</span>) <span>or die</span>(<span>"Failed in connecting database"</span>);
    mysql_select_db(<span>"Test"</span>,<span>$conn</span>);
    mysql_query(<span>"set names 'UTF-8'"</span>);
    <span>$query </span><span>= </span><span>"select </span><span><em>*</em></span><span> from UserInformation where email = '"</span><span>.</span><span>$email</span><span>.</span><span>"'"</span>;
    <span>$result </span><span>= </span>mysql_query(<span>$query</span>);
    <span>if </span>(<span>null </span><span>== </span>(<span>$row </span><span>= </span>mysql_fetch_array(<span>$result</span>))) <span>{
</span><span>echo </span><span>$_GET[</span><span>'callback'</span><span>]</span><span>.</span><span>"(no such user)"</span>;
    <span>} </span><span>else </span><span>{
</span><span>$user[</span><span>'email'</span><span>] </span><span>= </span><span>$email</span>;
        <span>$user[</span><span>'nickname'</span><span>] </span><span>= </span><span>$row[</span><span>'nickname'</span><span>]</span>;
        <span>$user[</span><span>'portrait'</span><span>] </span><span>= </span><span>$row[</span><span>'portrait'</span><span>]</span>;
        <span>echo </span><span>$_GET[</span><span>'callback'</span><span>]</span><span>.</span><span>"("</span><span>.</span>json_encode(<span>$user</span>)<span>.</span><span>")"</span>;
    <span>}
</span><span>?></span>
js 코드는 다음과 같습니다.

<script>
        $.ajax({
            url: "http://test.localhost/UserInterfaceForChatroom/UserInformation.php?email=pshuyue@gmail.com",
            type: "GET",
            dataType: 'jsonp',
            //            crossDomain: true,
            success: function (result) {
                //                data = $.parseJSON(result);
                //                alert(data.nickname);
                alert(result.nickname);
            }
        });
    </script>

두 가지 문제가 발생했습니다.

1. 첫 번째 문제:

잡히지 않았습니다. SyntaxError: Unexpected token :

해결책은 다음과 같습니다.

이 문제가 방금 나에게 발생했는데 그 이유는 위의 이유 중 하나도 아니고 jQuery 명령 getJSON을 사용하고 에 교차 도메인으로 이동해야 했기 때문에 JSONP를 사용하고 JSON 코드 callback=?를 반환하고 오류가 발생합니다.{"foo":"bar"}

jQuery17209314005577471107_1335958194322({"foo":"bar"})

다음과 같은 콜백 데이터를 포함했어야 했기 때문입니다. 여기에 제가 사용한 PHP 코드가 있습니다. JSON이 없으면 성능이 저하됩니다. 콜백)이 사용됩니다:

<code><span>$ret</span><span>[</span><span>'foo'</span><span>]</span><span>=</span><span>"bar"</span><span>;</span><span>
finish</span><span>();</span><span>function</span><span> finish</span><span>()</span><span>{</span><span>
    header</span><span>(</span><span>"content-type:application/json"</span><span>);</span><span>if</span><span>(</span><span>$_GET</span><span>[</span><span>'callback'</span><span>])</span><span>{</span><span>print</span><span> $_GET</span><span>[</span><span>'callback'</span><span>].</span><span>"("</span><span>;</span><span>}</span><span>print</span><span> json_encode</span><span>(</span><span>$GLOBALS</span><span>[</span><span>'ret'</span><span>]);</span><span>if</span><span>(</span><span>$_GET</span><span>[</span><span>'callback'</span><span>])</span><span>{</span><span>print</span><span>")"</span><span>;</span><span>}</span><span>exit</span><span>;</span><span>}</span></code>
향후 누군가에게 도움이 되기를 바랍니다.

2. 두 번째 질문:

json 데이터를 구문 분석합니다. 위 자바스크립트에서 볼 수 있듯이 jquery.parseJSON() 메서드를 사용하지 않았습니다. 이 메서드를 사용하기 시작했지만 항상

VM219:1 Uncaught SyntaxError: Unexpected token o in JSON at position을 보고했습니다. 1

오류가 발생했는데 나중에 jquery.parseJSON() 메서드를 사용하지 않았는데 모든 것이 정상이었습니다. 이유를 모르겠어요.

위 내용은 ajax 호출이 php 인터페이스를 반환하고 ajax 및 json의 내용을 포함한 json 데이터를 반환하는 방법을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.