드롭 다운 선택 상자가있는 페이지가 있습니다. 무언가가 선택되면 zend 컨트롤러를 호출하여 일부 데이터를 반환 한 다음 페이지의 다른 부분에 데이터가 채워지는 ajax 호출이 있습니다. 문제는 페이지가 새로 고쳐지고이를 방지하기 위해서입니다.젠드 컨트롤러/아약스가 페이지 새로 고침을하지 못하게하기
나는 지금까지 작동하지 않은 여러 가지를 시도했다.
내 자바 스크립트
event.preventDefault();
return false;
퍼팅/JQuery와/아약스
는 .. 컨트롤러 자체에
$this->disableRender();
$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer->setNoRender(TRUE);
을 넣고도 마지막에
return false;
을 가하고 공동 관리자.
누구에게 의견이 있습니까?
편집 : 여기에 아래
<script>
$(document).ready(function() {
$("#advDropdown").change(function (event) {
//event.preventDefault();
//return false;
var advertiser_id;
advertiser_id = $("#advDropdown").val();
$.ajax({
type: 'POST',
dataType: 'json',
//url: '/dashboard/reporting/getallcampaigns',
url: '/admin/ajax/getallcampaigns?format=json',
data: { advertiser_id: advertiser_id },
success: function(data) {
//alert(adv_data);
//var data = jQuery.parseJSON(adv_data);
var count = 0;
// loop through the returned data object
for(var key in data) {
if(typeof data[key] === "object") {
for(var i = 0; i < data[key].length; i++) {
for(var property in data[key][i]) {
//alert(property + " = " + data[key][i][property]);
if(count == 0){
$('#campaign').html('<table id="campaign">');
$('#campaign').append('<thead><tr><th width="100"><input type="checkbox"></th><th width="500">Campaign Name</th>');
$('#campaign').append("</tr></thead>");
} else {
$('#campaign').append('<tr><td><input type="checkbox" id=' + property +'"></td><td>' + property + " - " + data[key][i][property] + "</td></tr>");
}
count = count + 1;
}
}
$('#campaign').append("</table>");
} else if(typeof data[key] === "string") {
// alert(key + " = " + data[key]);
}
}
//alert("campaigns: " + campaigns);
//this.preventDefault();
event.preventDefault();
return false;
},
error: function() {
alert("could not change the status indicator color");
}
});
return false;
});
</script>
그리고 아래의 아약스와 컨트롤러 코드는
<?php
class Admin_AjaxController extends Zend_Controller_Action{
public function init(){
$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer->setNoRender();
}
public function getallcampaignsAction(){
$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer->setNoRender();
$campaign = new Campaign();
$data = $this->_request->getPost();
$campaigns = $campaign->getCampaigns($data['advertiser_id']);
$result = array();
$db = Zend_Db_Table_Abstract::getDefaultAdapter();
foreach($campaigns as $campaign){
// get campaigns id and get the name
$c_sql = 'SELECT * FROM campaigns WHERE ext_id = ' . $campaign['ext_id'];
error_log("c_sql2: " . $c_sql);
$campaign_name = $db->query($c_sql)->fetchAll();
$campaign_name2 = $campaign_name[0]['name'];
$temp_array = array($campaign['ext_id'] => $campaign_name[0]['name']);
array_push($result, $temp_array);
}
$final_array = array('data' => $result);
//header('Content-type: application/json');
echo json_encode($final_array);
//Zend_Controller_Action_HelperBroker::removeHelper('viewRenderer')
//$this->_helper->sendJson($data, array('keepLayouts' => false));
//$this->_helper->json($data, true, array('keepLayouts' => false);
//error_log("");
//return $final_array;
//$response = $this->_helper->autoCompleteDojo->sendAutoCompletion($data);
//$view = new ViewModel();
//$view->setTerminate(true);
//return $view;
//return $this->response;
//exit();
//return false;
//die();
}
}
?>
선택 상자가 제출중인 양식의 일부인 것처럼 들립니다. 그것이 페이지를 새로 고치는 원인입니다. 선택 상자와 관련된 코드를 표시 할 수 있습니까? – vascowhite
그냥 아약스와 컨트롤러 용 코드를 게시했습니다. 확인 해봐. – CodeCrack