Php 将值传递到外部js文件中
嘿,我希望有人能帮我 我有一个外部js文件,它位于webroot/js文件夹中,我使用以下方法将其插入到视图中:Php 将值传递到外部js文件中,php,javascript,ajax,cakephp,Php,Javascript,Ajax,Cakephp,嘿,我希望有人能帮我 我有一个外部js文件,它位于webroot/js文件夹中,我使用以下方法将其插入到视图中: echo $this->Html->script('script'); 在js文件中,我有一个将数据插入数据库的ajax请求: var assetData = { "project_id": $("#projectId").val(), "asset_id":"??", "content": "content":$(this).html() }; $.aja
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文件中获得它,但是资产项是动态创建的,它们被创建并保存到assets表中,现在我想用内容更新该资产
获得资产的最佳方式是什么?例如,我无法获取id并将其保存在div的id中,因为它是在js文件中创建的
如果有任何建议,我将不胜感激因此,您可能需要考虑HTML部分。这些是HTML的一小部分,表示从单个标记到弹出窗口的任何内容。重要的是它没有or标记
$.post('/assets/add', data, function (html) {
$('#assets').append(html);
}, 'html');
发布数据后,调用将返回一段HTML。然后可以将该HTML附加到页面上的一个DIV中
<div id="assets">
<div class="asset" id="asset-1">
<p>Asset content</p>
</div>
</div>
/assets/add
应返回所创建资产的ID
如果要插入mysql数据库,那么一个选项是使用(手册中有mysqli和pdo的等效项)
然后您的/assets/add
应在创建ID后回显该ID
echo $asset_id; // some INT id
利用我收到的建议,我成功地解决了这个问题: 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;
}
}
嘿,我得到了未定义的assetData['asset\u id']。我想我没有在控制器中正确返回值。我现在有这样一个:公共函数create($id=null){if($this->data!=null){$this->Asset->save($this->data);}}}谢谢你的建议,但如果不需要,我不想添加html。看到用户可以创建无限数量的资产,为每一个资产添加html是没有效率的。
$.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;
}
}