도와주세요. "DataTables 경고 : 서버의 JSON 데이터를 구문 분석 할 수 없습니다.이 오류는 JSON 형식 오류로 인해 발생합니다."라는 경고 메시지가 표시됩니다. PHP로 zend 프레임 워크에서 JSON 인코딩.서버의 JSON 데이터를 파싱하지 못했습니다. 이것은 그룹을 사용하는 동안 Zend 프레임 워크에서 JSON 형식 오류로 인해 발생했습니다.
이 경고는 테이블이 비어있는 경우에만 발생하지만 SQL 쿼리에서 그룹 키워드를 사용하면이 문제가 발생합니다. 그룹 키워드를 사용하지 않으면 테이블에서 하나의 레코드 만 제공되지만 테이블에는 더 많은 레코드가 있습니다. 기록. 다음 쿼리를 사용하면 출력은 모든 테이블의 데이터 만 표시하고 그렇지 않으면 데이터 테이블 경고가 표시됩니다. // SQL 쿼리 (모델/테이블/product.php가)
public function fetchAllProductItems() {
$oSelect = $this->select()
->setIntegrityCheck(false)
->from(array("p" => "products","b" => "bid"), ('*'))
->joinLeft(array("b" => "bid"), "b.product_id=p.product_id", array('bid_id','bid_amount'))
->joinInner(array("e" => "employees"), "e.employee_id=p.employee_id",array('ename'))
->where("p.verified = ?", "Yes")
->where("p.sold_out = ?", "No")
->group('p.product_id')
->having("p.sale_end_date >= ?", date("Y-m-d"));
return $oSelect;
}
가 // JSON 인코딩 (모듈/판매/컨트롤러/apicontroller가)
public function getProductsAction()
{
$oProductModel = new Application_Model_Db_Table_Products();
$oSelect = $oProductModel->fetchAllProductItems();
echo Zend_Json::encode($this->_helper->DataTables($oSelect, array('product_id','e.ename as employee_name','name', 'brand', 'conditions', 'about','image_path', 'reserved_price', 'Max(b.bid_amount) as amount')));
}
은 아래의 쿼리는 하나의 레코드 만 표시됩니다, 테이블에 둘 이상의 레코드가있는 경우. 테이블이 비어 있다면 "테이블 메시지에서 사용할 수있는 데이터가 없습니다"라는 메시지가 나타납니다.
// SQL 쿼리 (모델/테이블/product.php)
$oSelect = $this->select()
->setIntegrityCheck(false)
->from(array("p" => "products","b" => "bid"), ('*'))
->joinLeft(array("b" => "bid"), "b.product_id=p.product_id", array('bid_id','bid_amount'))
->joinInner(array("e" => "employees"), "e.employee_id=p.employee_id",array('ename'))
->where("p.verified = ?", "Yes")
->where("p.sold_out = ?", "No")
->where("p.sale_end_date >= ?", date("Y-m-d"));