嘿,我希望有人可以帮助我,
我有一个外部js文件,它位于webroot / js文件夹中,我使用以下命令插入到我的视图中:
echo $this->Html->script('script');
在js文件中,我有一个将数据插入数据库的ajax请求:
var assetData = {
"project_id": $("#projectId").val(),
"asset_id":"??",
"content": "content":$(this).html()
};
$.ajax({
url:'/assets/add',
type:"POST",
data:assetData
});
在我看来,我使用project_id创建了一个隐藏的表单字段,以便我可以在js文件中获取它,但是资产项是动态创建的,创建并保存到资产表中,现在我想要更新含有内容的资产。
获得资产的最佳方式是什么?我无法获取id并保存它,例如,在div的id中,因为它是在js文件中创建的。
我真的很感激任何建议!
答案 0 :(得分:2)
/assets/add
应返回其创建的资产的ID。
如果你要插入一个mysql数据库,那么一个选项是使用mysql_insert_id
(手册上有mysqli和pdo等价物)。
var assetData = {
"project_id": $("#projectId").val(),
"content": "content":$(this).html()
};
$.ajax({
url:'/assets/add',
type:"POST",
data:assetData,
dataType:'text',
success:function (data)
{
assetData['asset_id'] = (int)data;
}
});
然后你的/assets/add
应该在ID创建后回显ID
echo $asset_id; // some INT id
答案 1 :(得分:0)
所以你可能想要考虑HTML部分。这些是HTML的一小部分,代表从单个标签到弹出窗口的任何内容。重要的是它没有或标签。
$.post('/assets/add', data, function (html) {
$('#assets').append(html);
}, 'html');
在POST数据后,您的调用会返回一段HTML代码。然后,您可以将该HTML附加到页面上的DIV。
<div id="assets">
<div class="asset" id="asset-1">
<p>Asset content</p>
</div>
</div>
在你的控制器中(我假设它是CakePHP),你有:
if ($this->Asset->save($this->data)) {
$this->autoLayout = false;
$this->render('asset_partial.html');
}
答案 2 :(得分:0)
使用我收到的建议,这就是我设法解决问题的方法:
javascript文件:
$.ajax({
url:'/assets/create',
type:"POST",
data:assetData,
dataType:'text',
success: function (response) {
if (response.success) {
alert("response: "+response);
} else {
//console.log(response.data, response.code);
alert("response: "+response);
}
}
});
控制器:
public function create($id = null) {
if ($this->data != null) {
$this->Asset->save($this->data);
$this->autoRender = false;
echo $this->Asset->id;
}
}