Php 将值传递到外部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

嘿,我希望有人能帮我

我有一个外部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文件中获得它,但是资产项是动态创建的,它们被创建并保存到assets表中,现在我想用内容更新该资产

获得资产的最佳方式是什么?例如,我无法获取id并将其保存在div的id中,因为它是在js文件中创建的


如果有任何建议,我将不胜感激
$.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;
    }
}