ドロップダウン選択ボックスのあるページがあります。何かが選択されると、いくつかのデータを返す zend コントローラーを呼び出す ajax 呼び出しがあり、ページの別の部分にデータが取り込まれます。問題はページの更新であり、それを防ぎたいです。
これまでにうまくいかなかったいくつかのことを試しました。
パッティング
event.preventDefault();
return false;
私のjavascript/jquery/ajaxで
パッティング
$this->disableRender();
$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer->setNoRender(TRUE);
コントローラー自体に..そしてまた入れます
return false;
コントローラーの最後に。
誰か提案はありますか?
編集:以下はajaxとコントローラーのコードです
<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();
}
}
?>