문제

여기서 코드 예제를 실제로 찾고 있지 않고 개념 만 있습니다.

PHP 스크립트에 대한 세 가지 AJAX 호출을 통해 업데이트되는 페이지에 3 개의 섹션이 있습니다. 이 세 호출을 하나의 더 큰 전화로 압축하고 JSON의 클라이언트에 대한 응답을받는 가장 쉬운 방법은 무엇입니까? 클라이언트에 대한 응답을 어떻게 분리하여 어떤 정보를 다시 전송하는지에 따라 응답 데이터를 조작 할 수 있습니까?

도움이 되었습니까?

해결책

나는 Cris '방법을 좋아하지만 약간의 개선을 제공 할 수 있다고 생각합니다. 이미 3 개의 분리 된 엔티티가 있으므로 모든 것을 다시 코딩해야 할 필요성을 줄이기 위해 PHP를 하나의 파일로 결합하는 줄을 따라 무언가를 할 수 있습니다. include 'page.php' 그리고 각각이하는 일에 대한 이름이 지정된 속성으로 JSON을 통해 객체를 다시 보냅니다 ( "이름", "날짜"및 "퍼지리스"). 요청을 보내는 클라이언트 코드는 단순히 한 번의 요청으로 개별적으로 전송되는 3 가지 기능이 보낸 모든 인수를 간단히 갖게됩니다. 반환 된 JSON은 다음과 같은 것을 보게됩니다 (객체/배열/주석은 영역에 무엇이든 넣습니다) :

{
    "names" : {/*stuff needed for names goes in here*/},
    "dates" : {/*stuff needed for dates goes in here*/},
    "fuzzyThings" : {/*all fuzzy things goes in here*/}
}

이를 클라이언트 측에 가져 오면 각각이 이미 리턴 데이터를 처리 할 함수 (또는 함수 세트)가 있다고 가정 하듯이 다음과 같은 방식으로 호출 할 수 있어야합니다.

function handler(retText) {
    var returnedObject = eval(retText);

    doStuffWithNames(returnedObject.names);
    doStuffWithDates(returnedObject.dates);
    playWithFuzzyThings(returnedObject.fuzzyThings);
}

또한 PHP 끝에서는 Unified PHP 페이지를 만들 수 있습니다 (희망적으로 아무것도 생각하지 않고) :

<?php
    echo '{';
        echo '"names":{';
        include 'names.php';
        echo '},';

        echo '"dates":{';
        include 'dates.php';
        echo '},';

        echo '"fuzzyThings":{';
        include 'fuzzyThings.php';
        echo '}';
    echo '}';
?>

메모: 3 개의 PHP 페이지를 편집하여 $ _post를 올바르게 확인하고 다른 페이지의 기능을 방해하지 않고도 아직없는 방법을 선호합니다. if(isset($_POST['whatever'])) { ... } 이 방법으로 모든 것이 올바르게 전송되었는지 확인하려면 원하는만큼 포함 할 수 있으며 PHP 파일과 관련이 없다면 (예 : 해당 페이지의 해당 섹션을 사용하지 않는 경우) 공백을 반환합니다. 속성은 단순히 그것을 사용하지 않을 것입니다 (기본적으로 "하나의 크기에 맞는"유형의 물건을 만들어냅니다).

그것이 나중에 효과가 있기를 바랍니다!

다른 팁

다음과 같이 JSON을 포맷 할 수 있습니다.

"user" : [ {
    "name" : "Harry",
    "hobby" : "Skating"
}, {
    "name" : "Dave",
    "hobby" : "Scuba Diving"
} ],
"news" : [ {
    "date" : "3/13/05",
    "title" : "Blah",
    "postedby" : "Mike",
} ]

그리고 이제 당신의 ajax 응답에서 :

var data = eval('('+ xhr.responseText +')'); // Ajax response
var user = data.user[0].name; // Harry
var user2 = data.user[1].name; // Dave
var title = data.news[0].title;

for 루프를 사용하여 데이터를 통과 할 수 있습니다. 위의 예에서는 이제 PHP를 사용하여 여러 카테고리 (사용자, 뉴스, ect.)로 JSON을 포맷하고 하나의 호출만으로 모든 것을 되돌릴 수있는 방법을 확인해야합니다. 보다 정교한 예를 원하시면 참조하십시오. 이것 기사뿐만 아니라 기사 이것.

페이지의 3 개 섹션에 따라 JSON 형식을 만들어야한다고 응답 후 해당 섹션으로 채울 수 있도록 ID를 작성해야한다고 생각합니다.

나는 개인적으로 JSON 방법을 좋아하지만 JSON을 처음 사용하거나 편안하지 않다면 어떤 이유로 든이 목적으로 특별히 설계된 jQuery 플러그인이 있습니다. JQuery Taconite 플러그인

Rails Community에는 RJS라는 세 번째 방법이 있으며 오늘날에는별로 뜨겁지 않고 약간 쓸모 없지만 여전히 자체 팬이 있습니다. RJ를 PHP로 포팅 한 사람이 있는지 궁금하십니까?

이것은 나를위한 workimg입니다
PHP 코드 :

//for test
$categoryName = "category";
$idcategory = "1";

 $json = "{'productcategory':[{'categoryname':'".$categoryName."','idcategory':'".$idcategory."'}]}";           
 echo $json; 

자바 스크립트 :

var str = xmlhttp.responseText.trim();
var json = JSON.stringify(eval("(" + str + ")"));
var obj = JSON.parse(json);
alert(obj.productcategory[0].idcategory);
alert(obj.productcategory[0].categoryname);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top