thinkphp 프레임워크 Ajax 배우기(방금 너무 게을러서 코드를 게시하지 못했기 때문에 응답자 모두에게 사과드립니다.)
내 생각은: 프런트 데스크에서 Ajax를 실행하는 것입니다. -->> ->> 데이터베이스에서 데이터 가져오기 -->> 데이터를 포그라운드 처리로 직접 반환
템플릿을 렌더링하지 않고 컨트롤러에서 직접 데이터를 반환하려면 어떻게 해야 합니까?
문제는 $this->ajaxReturn()이어야 합니다;
ajaxReturn()을 삭제하고 대신 var_dump($data)를 사용했습니다
프런트에서 받은 데이터는 다음과 같습니다
드디어 문제가 해결되었습니다. 발견된 내용이 json 형식이 아니었습니다. ajaxReturn()이 전송한 내용이 json 형식이 아니어서 프런트에서 받은 내용이 array([0]=>array()였습니다. {})), 따라서 $.parseJSON(data)을 사용하여 구문 분석할 수 없습니다.
데이터를 구문 분석하는 데 대신 $.each(data[0], function(i,n){})를 사용하세요
thinkphp 프레임워크 Ajax 배우기(방금 너무 게을러서 코드를 게시하지 못했기 때문에 응답자 모두에게 사과드립니다.)
내 생각은: 프런트 데스크에서 Ajax를 실행하는 것입니다. -->> ->> 데이터베이스에서 데이터 가져오기 -->> 데이터를 포그라운드 처리로 직접 반환
템플릿을 렌더링하지 않고 컨트롤러에서 직접 데이터를 반환하려면 어떻게 해야 합니까?
문제는 $this->ajaxReturn()이어야 합니다;
ajaxReturn()을 삭제하고 대신 var_dump($data)를 사용했습니다
프런트에서 받은 데이터는 다음과 같습니다
드디어 문제가 해결되었습니다. 발견된 내용이 json 형식이 아니었습니다. ajaxReturn()이 전송한 내용이 json 형식이 아니어서 프런트에서 받은 내용이 array([0]=>array( {})), 따라서 $.parseJSON(data)을 사용하여 구문 분석할 수 없습니다.
데이터를 구문 분석하는 데 대신 $.each(data[0], function(i,n){})를 사용하세요
Ajax가 데이터를 얻기 위해 백그라운드에 요청한 다음 프런트엔드 템플릿 엔진을 통해 이를 프런트엔드로 렌더링한다는 것이 무슨 뜻인지 잘 모르겠습니다. "? , 데이터를 반환하려면 템플릿 엔진이 여전히 필요합니까? 템플릿 엔진을 사용하면 문자열 연결을 방지하고 ajax에서 반환된 데이터를 더 잘 처리할 수 있습니다. Ajax 요청 데이터는 프로젝트에서 자주 사용되기 때문에 제가 사용하는 방식과 같이 메소드를 직접 캡슐화할 수 있습니다.
<code>protected $msg; //返回数据失败 protected function fail($mode=false,$type="json"){ $this->msg['status'] = 'failure'; if(true===$mode){ $this->reply($type); } } //返回数据成功 protected function succeed($mode=false,$type="json"){ $this->msg['status'] = 'success'; if(true===$mode){ $this->reply($type); } } //返回的数据 protected function setResult($result){ $this->msg['result'] = $result; } protected function reply($type="json"){ if($type == 'string'){ print_r($this->msg); }else{ echo json_encode($this->msg); } exit; }</code>
사용법:
1. 요청 성공:
$this->setResult($data);
$this->succeed(true)
요청 실패:
$this->setResult("Request failed") //
$this->fail(true)
js의 Ajax 요청:
<code>$.post('',$data).done(function(rs){ var rs = $.parseJSON(rs); if(rs.status == 'success') { var msg = rs.result; //获取数据 } else { //请求失败的处理 } });</code>
$this->ajaxReturn($data);
예전에는
$this->assian('data', $data);
$this->display();
지금은
$this->ajaxReturn($data);
나쁘지 않아요! 배웠다!