2014-02-14 1 views
0

인데 최근에 jQuery를 배우는 중이고 아주 간단한 PHP 스크립트로 ajax 호출을하려고하는데 그냥 json 텍스트 만 출력합니다. 내 스크립트에 1 echo 문이있을 때 호출 기능을 사용할 수있었습니다. 나는 그때마다 3 초 동안 잠을 자고 echo 4 json으로 복잡한 스크립트를 흉내 내려고 노력했지만, 이번에는 작동시키지 못했습니다. 여기 ajax 호출 상태의 PHP 스크립트 jQuery가

<!DOCTYPE html> 
<html> 
    <head> 
     <title>ajax</title> 
      <script src="jquery.js"></script> 
      <script src="app.js"></script> 
    </head> 
    <body> 
     <div id="loading"></div> 
    </body> 
</html> 

내 app.js입니다 : 여기

내 index.html을 내 목적은 시도

<?php 
    sleep(3); 
    echo json_encode(array("text"=>"you got me1")); 
    sleep(3); 
    echo json_encode(array("text"=>"you got me2")); 
    sleep(3); 
    echo json_encode(array("text"=>"you got me3")); 
    sleep(3); 
    echo json_encode(array("text"=>"you got me4")); 
?> 

: 여기

$(function() { 
    $('#loading').html('<img src="http://preloaders.net/preloaders/287/Filling%20broken%20ring.gif"> loading...'); 
    var req = $.ajax({ 
     url: "x.php", 
     dataType: "json" 
    }); 
    req.done(function(data) { 
     setTimeout(function() { 
          $('#loading').html(data.text); 
             }, 1000); 
    }); 
}); 

내 x.php입니다 '나 한테있어.', '네가있어.'... 몇 초 후에 하나씩 보여줘. 누구든지 도와 주며 내가 잘못하고있는 곳을 말해 줄 수 있습니까? 많은 감사드립니다.

+2

현재 접근 방식은 작동하지 않습니다를 생성하는 e (인코딩과 모든 인코딩 이후의 시간을 잠자 게했을 때). 최선의 방법은 여러 번의 아약스 호출을하는 것입니다. –

+0

네, 잠들기 사이에 버퍼를 플러시 할 수 없다면, 12 초 정도 지나면 1 회의 요청으로 돌아올 것입니다. – Klors

+0

답장을 보내 주셔서 감사합니다. 나는 json이 하나씩 출력 될 것이라고 생각하니? 'sleep '은 코드가 일시 중지되었다는 것을 의미합니까? 일부 장기 실행 프로세스를 모방하려고합니다 ... – dli

답변

0

JSON은 모 놀리 식 문자열이어야합니다. 단일 응답으로 4 개의 JSON 구문을 출력 할 수 없습니다. 예 :

$x = array('foo'); 
$y = array('bar'); 
$z = array('baz'); 

echo json_encode($x); 
echo json_encode($y); 
echo json_encode($z); 

와이어를 통해

['foo']['bar']['baz'] 

를 보내드립니다. 구문 적으로 유효한 JSON이 아니며 수신 측에서 구문 분석 오류를 생성합니다.

JSON으로 4 가지 다른 데이터 덩어리를 보내려면 4 개의 개별 요청을 수행하거나 각 응답을 하위 배열에 포함해야합니다 (예 :

var foo = XXX; 
      ^^^---json goes here 

당신이 당신의 출력을 접수하려면

, 당신이 :

$response = array(
    'x' => array('foo'), 
    'y' => array('bar'), 
    'z' => array('baz') 
); 
echo json_encode($response); 

JSON이 (거의 정확하게)입니다 자바 스크립트의 변수 할당의 "오른쪽"와 같은 기억 PHP는 페이지가 ONC 전혀 JSON 배열을 표시하기 때문에, 당신은 말 그대로 제대로 실행/그 할당 작업에 붙여 넣기와 JS 엔진 구문 분석을 가질 수 뭔가, 너무

var response = ['foo']['bar']['baz']; // syntax error 
var response = [['foo'],['bar'],['baz']]; // syntactically valid 
+0

입력 해 주셔서 감사합니다 :) – dli

관련 문제