2015-08-18 127 views
1

,所以我想實現這一點: https://github.com/phalcon/cphalcon/wiki/Dependent-Select-Dropdown爾康Ajax響應返回HTML

,我有一切工作,它創建的選擇,填充第一選擇,當我選擇一個值,它可以正確地返回象下面這樣當值我在控制器中調用了grabStatesAction:

[{「id」:「2」,「name」:「Section1」},{「id」:「24」,「name」:「Section2」}「}]

但是,如果我警告JavaScript內的響應,它根本不返回,而是從頁面返回一堆HTML。

這裏是我的腳本

<script type="text/javascript"> 
    $("#id_product").change(function() { 
      var value = $(this).val(); 

      $.ajax({ 
       type: "POST", 
       contentType: "application/json", 
       url: '/admin/section/grabSection/', 
       data: {"id": value}, 
       success: function(response){ 
        $("#selectSection option") 
         .not(":first").remove(); 

        alert(response); 
        parsed = $.parseJSON(response); 


        $.each(parsed, function(key, value) { 
         $("#selectSection") 
          .append($("<option></option>") 
          .attr("value",value.id) 
          .text(value.name)); 
        }); 
       } 
      }); 
     }); 
</script> 

這裏是控制器

public function grabSectionAction() 
    { 
     $id=2; //hardcoded for testing purposes 
     $data = Sections::find(array(
      'columns' => array('id_section, section'), 
      'conditions' => 'active = 1 AND id_section = :id:', 
      'bind' => array('id'=>$id) 
     )); 
     $resData = array(); 
     foreach ($data as $result) { 
      $resData[] = array("id"=>$result->id_section, "name"=>$result->section); 
     } 

     echo json_encode($resData); 
    } 

頁面與選擇是一個形式的模式窗口。我想也許該頁面應該有應用程序類型設置爲json,也許這是問題,但如果我這樣做,那麼表單將會中斷。我確實將JavaScript中的應用程序類型設置爲json。任何想法我做錯了什麼或是否有任何具體的額外信息,你只需要讓我知道

回答

2

下面試試..用Console.log而不是警報來查看完整的響應字符串。 MoreInfo:https://developer.chrome.com/devtools/docs/console-api

public function grabSectionAction() 
{ 
    $this->view->disable(); 

    //Create a response instance 
    $response = new \Phalcon\Http\Response(); 

    $id = 2; //hardcoded for testing purposes 
    $data = Sections::find(array(
     'columns' => array('id_section, section'), 
     'conditions' => 'active = 1 AND id_section = :id:', 
     'bind' => array('id' => $id) 
    )); 
    $resData = array(); 
    foreach ($data as $result) { 
     $resData[] = array("id" => $result->id_section, "name" => $result->section); 
    } 

    //Set the content of the response 
    $response->setContent(json_encode($resData)); 

    //Return the response 
    return $response; 
} 
+0

謝謝,一旦我看到了禁用視圖代碼行打我,這就是爲什麼我看到的HTML,我說好的禁用的觀點。我甚至不需要改變其他任何東西,它所需要的只是視圖被禁用並立即工作 – user1547410