我正在CakePHP中构建一个应用程序,我有一个jquery对话框窗口,每次用户打开它时,我都想执行一个jquery请求,该请求将使用请求的结果填充内容。 我有一个位于webroot / js文件夹中的js文件,其中包含以下脚本:
$.ajax({
url:'/projects/getAssets',
type:"POST",
data:assetData,
//dataType:'text',
update: '#assetManagerContent'
});
在我的控制器文件(ProjectsController)中,我有以下功能:
function getAssets($id = null) {
// Fill select form field after Ajax request.
if(!empty($this->data)){
$this->set('assetsFilter',
$this->Project->Asset->find('list',
array(
'conditions' => array(
'Asset.project_id' => '23'
)
)
)
);
$this->render('elements/assets', 'ajax');
}
}
最后我有了视图(元素/资产):
<?php $assetsFilter = $this->requestAction('projects/getAssets'); ?>
<?php foreach($assetsFilter as $assetFilter): ?>
<div class="assetManager-asset">
<div class="thumb"></div>
<div class="label-name"><?php echo $assetFilter['AssetType']['type'] ?></div>
<div class="label-date"><?php echo $assetFilter['Asset']['layer'] ?></div>
<?php //echo $assetFilter['Asset']['id'] ?>
</div>
<?php endforeach; ?>
当用户打开对话框时,会触发ajax请求,但#assetManagerContent div中似乎没有任何内容。
我希望有人可以告诉我我做错了什么
答案 0 :(得分:5)
据我所知,jQuery ajax api中没有update
选项。相反,您应该添加成功回调并在那里填充数据:
$.ajax({
url:'/projects/getAssets',
type:"POST",
data:assetData,
//dataType:'text',
success: function(data) {
$('#assetManagerContent').html(data);
}
});
答案 1 :(得分:2)
没有update
- 选项,正如jeremyharris已经指出的那样。
如果您只想用通过AJAX加载的HTML填充元素,您还可以使用$.load()
:
$('#assetManagerContent').load('/projects/getAssets', assetData);
它基本上是相应$.ajax()
来电的简写,如果POST
参数存在,它会自动发出data
请求。
答案 2 :(得分:0)
为了让您的行动更快,更清洁,可重复使用,您可以这样写。
function getAssets($id = null) {
// Fill select form field after Ajax request.
if(!empty($this->data)){
return $this->Project->Asset->find('list',
array(
'conditions' => array(
'Asset.project_id' => '23'
)
)
);
}
}
的Ajax
$.ajax({
url:'/projects/getAssets/'+id,
type:"POST",
success: function(data) {
$('#assetManagerContent').html(data);
}
});
OR
$('#assetManagerContent').load('/projects/getAssets/'+id);
答案 3 :(得分:0)
它有效但在文本模式下显示结果。 e.g。
<form action="/amit/tour-writer/derivedItineraries/getHotelDetail/1230" id="DerivedItineraryGetHotelDetailForm" method="post" accept-charset="utf-8"> <div style="display:none;"><input type="hidden" name="_method" value="POST"/> </div> <div class="required"><label for="DerivedItineraryInclusion">Inclusion</label> <textarea name="data[DerivedItinerary][inclusion]" class="ckeditor" required="required" style="width:200px;" cols="30" rows="6" id="DerivedItineraryInclusion">Test data</textarea></div></td></tr> </form>