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>
<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"})
<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 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.