如何使用javascript将Yii2对象加载到输入中
我已使用以下方法生成模型数据:如何使用javascript将Yii2对象加载到输入中,javascript,jquery,json,yii2,Javascript,Jquery,Json,Yii2,我已使用以下方法生成模型数据: public function actionGetDatosProducto() { \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; $id = $_POST['id']; if (($model = Producto::findOne($id)) !== null) { return $model; } else {
public function actionGetDatosProducto()
{
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
$id = $_POST['id'];
if (($model = Producto::findOne($id)) !== null) {
return $model;
} else {
echo '';
}
}
因此,我有我的JSON对象及其属性:
Object {Idproducto: 65, producto: "Meoe", fraccion: "1111", Idcte: 1}
是否有一行我可以使用,因此JSON响应的四个值通过javascript自动分配给视图上的模型输入,如:
$.post(url, {
id: idModel,
}, function (data) {
//data is the object with attributes
$(form).load(data);
}, 'json');
为避免通过输入分配进行手动输入:
$('#producto-idproducto').val(data.Idproducto);
$('#producto-producto').val(data.producto);
$('#producto-fraccion').val(data.fraccion);
最后,我在Javascript对象中使用了两个函数来完成任务,使用以下代码:
toDash: function (modelName) {
modelName = modelName.substr(0, 1).toLowerCase() + modelName.substr(1);
return modelName.replace(/([A-Z])/g, function($1){return "-"+$1.toLowerCase();});
},
fillAttributesToFields: function (modelName, data) {
var modelNameDash = this.toDash(modelName);
for (attribute in data) {
$('#'+modelNameDash+'-'+attribute.toLowerCase()).val(data[attribute]);
}
}
该代码自动将来自AJAX请求的模型数据填充到表单中
我不确定是否有办法使用框架提供的函数来完成这项任务,但这两个函数对我来说很有效。最后,我使用Javascript对象中的两个函数来完成这项任务,使用以下代码:
toDash: function (modelName) {
modelName = modelName.substr(0, 1).toLowerCase() + modelName.substr(1);
return modelName.replace(/([A-Z])/g, function($1){return "-"+$1.toLowerCase();});
},
fillAttributesToFields: function (modelName, data) {
var modelNameDash = this.toDash(modelName);
for (attribute in data) {
$('#'+modelNameDash+'-'+attribute.toLowerCase()).val(data[attribute]);
}
}
该代码自动将来自AJAX请求的模型数据填充到表单中
我不确定是否有一种方法可以利用框架提供的功能来实现这一点,但这两个功能对我来说是有效的