2012-03-27 90 views
1

我想要使用AJAX删除操作是异步的,在控制器我作出这样的处理请求错误JSON parsing- Zend框架

public function deleteAction() { 

    $request = $this->getRequest(); 
    if ($request) { 
     $visitId = $request->getParam('visit_id'); 
     $mapper = new Visits_Model_VisitsMapper(); 
     try { 
      $mapper->deleteVisit($visitId); 
      echo json_encode("1"); 
     } catch (Exception $e) { 
      $this->view->message = "error inserting Data, Error details: " . $e->getMessage(); 
      echo json_encode("0"); 
     } 

     Zend_Controller_Front::getInstance()->setParam('noViewRenderer', true); 
    } 
} 

,并在jQuery脚本

$("a.delete").live('click',function(e){ 
    e.preventDefault(); 
    var data={ 
       "visit_id":$(this).parent().parent().attr("id") 
    }; 

    jQuery.ajax({ 
     url: "/visits/visit/delete", 
     type: "POST", 
     dataType: 'json', 
     data: requestDate, 
     success: successCallback, 
     error:failureCallback 
    }); 

行动当我点击删除按钮时,请求被发送并弹出一个错误

Error <!-- application/layouts/scripts/layout.phtml --> 
the whole html of layout page.... 
error SyntaxError: JSON.parse: unexpected character 

我检测到d elete过程不会发生! 当我发送同步请求时,删除操作成功发生。而且当我在不使用Layout页面的情况下进行AJAX调用时,删除也成功。

什么是错误?

+0

'数据类型:“JSONP”,'改变,并给它另一个去...通常可以解决问题。 – Val 2012-03-27 11:49:26

+0

不,它不工作... – palAlaa 2012-03-27 12:37:25

回答

0

我怀疑你的布局被渲染,然后被jQuery代码解析(失败)。尝试将其关闭:

try { 
    $mapper->deleteVisit($visitId); 
    if ($this->getRequest->isXmlHttpRequest()) { 
     $this->_helper->json("1"); //this will disable layout and view renderer 
            //and echo your data 
    } 
    else { 
     //... 
    } 
} 
+0

这是一个简单的错误跟踪,只是仔细阅读错误是什么文件和行 – bububaba 2012-03-27 12:36:42