我使用CakePHP版本2.4.7
我像这样使用Js
助手
$this->Js->link('+ Add file', array('action' => 'add_file'), array('update' => '#files'))
问题是我想将#files
内容附加到返回的数据而不是替换。
如果有任何解决方法,请告诉我。
答案 0 :(得分:0)
它适用于cake2.2.9。 代码:
echo $this->Form->button('+ Add file', array('id'=>'add_file','type'=>'button','class'=>'buttonStyle'));
$callback_code = 'var c_html = $("#click_update").html();$("#content_update").append(c_html);';
$request_code = $this->Js->request(
array('action' => 'a', 'param'),
array('async' => false, 'update' => '#click_update','complete' =>$callback_code)
);
$this->Js->get('#add_file')->event('click',$request_code);
----------
希望对你有用!
答案 1 :(得分:0)
我在这里找到了一个解决方案:http://cakephp.1045679.n5.nabble.com/Js-Jquery-Helper-Append-Instead-of-Update-td3325344.html
基本上你需要对JqueryEngineHelper.php(对于CakePHP 2.x)请求函数做一个小改动:
public function request($url, $options = array()) {
$url = html_entity_decode($this->url($url), ENT_COMPAT, Configure::read('App.encoding'));
$options = $this->_mapOptions('request', $options);
if (isset($options['data']) && is_array($options['data'])) {
$options['data'] = $this->_toQuerystring($options['data']);
}
$options['url'] = $url;
if (isset($options['update'])) {
$wrapCallbacks = isset($options['wrapCallbacks']) ? $options['wrapCallbacks'] : true;
$success = '';
if (isset($options['success']) && !empty($options['success'])) {
$success .= $options['success'];
}
/ *添加以下if块,添加“position”选项,如果未设置,则将其设置为默认值“html”* /
if(!isset($options['position'])){
$options['position'] = "html";
}
/ *这里是改变的部分:用$ options替换“.html(数据)部分['position'] * /
$success .= $this->jQueryObject . '("' . $options['update'] . '").' . $options['position'] . '(data);';
if (!$wrapCallbacks) {
$success = 'function (data, textStatus) {' . $success . '}';
}
$options['dataType'] = 'html';
$options['success'] = $success;
unset($options['update']);
}
$callbacks = array('success', 'error', 'beforeSend', 'complete');
if (!empty($options['dataExpression'])) {
$callbacks[] = 'data';
unset($options['dataExpression']);
}
$options = $this->_prepareCallbacks('request', $options);
$options = $this->_parseOptions($options, $callbacks);
return $this->jQueryObject . '.ajax({' . $options . '});';
}
在您的视图中,您可以使用位置选项:
$this->Js->link('+ Add file', array(
'action' => 'add_file'
), array(
'update' => '#files',
'position' => 'append'
));