在 Angular 中将 JSON 格式字符串转换为真实对象
Converting JSON format string into a real object in Angular
我有一个JSON格式字符串,我想像参数一样添加到post请求中。
我正在尝试执行要求,当我执行请求时,我从我的 Web 服务收到此错误:
#0 /opt/assets/WS/ws.php(48): Slim'Slim::handleErrors(8, 'Trying to get p...', '/opt/assets/WS/...', 48, Array)
#1 [internal function]: {closure}()
#2 /opt/assets/WS/vendor/slim/slim/Slim/Route.php(468): call_user_func_array(Object(Closure), Array)
#3 /opt/assets/WS/vendor/slim/slim/Slim/Slim.php(1357): Slim'Route->dispatch()
#4 /opt/assets/WS/vendor/slim/slim/Slim/Middleware/Flash.php(85): Slim'Slim->call()
#5 /opt/assets/WS/vendor/slim/slim/Slim/Middleware/MethodOverride.php(92): Slim'Middleware'Flash->call()
#6 /opt/assets/WS/vendor/slim/slim/Slim/Middleware/PrettyExceptions.php(67): Slim'Middleware'MethodOverride->call()
#7 /opt/assets/WS/vendor/slim/slim/Slim/Slim.php(1302): Slim'Middleware'PrettyExceptions->call()
#8 /opt/assets/WS/ws.php(59): Slim'Slim->run()
#9 {main}
就像请求不包含真正的 JSON 对象一样。如何转换它?我做了一些技巧,但似乎不起作用。这是我的脚本:
assets.controller('AfegirTipusActiusCtrl', function ($scope, $http){
// Camps formulari text pla
/* $scope.nomAtribut = "<input type='text' name='firstname'>";
$scope.mida = "<input type='number' name='firstname'>";
$scope.obligatori = "<input type='checkbox' name='vehicle' value='yes'>"; */
// Construeix combo
$http.get('http://10.0.203.73/WS/ws.php/getCombo/1').success(function(data) {
$scope.options = data;
});
$scope.atributs = [];
$scope.addRow = function(){
var newRow = {
nomAtribut: "",
tipus: "",
mida: "",
prioritat: "",
obligatori: "",
observacions: ""
}
$scope.atributs.push(newRow);
}
/* $scope.addField = function() {
$scope.atributs.push(newRow);
};*/
$scope.prioritat = $scope.atributs.length;
// Envia atributs a WS
$scope.sendRow = function(){
var d = "{'nomAtribut': 'marca','tipus': 'String','mida': '15','prioritat': '1','obligatori': 'No'}";
$http.post("http://10.0.203.73/WS/ws.php/tipusactius/alta", angular.toJson(d)).success(function(data){
$scope.status = data;
})
}
});
编辑:
我还添加了解析请求的 php Slim 函数:
$app->post('/tipusactius/alta', function () use ($app) {
$json = $app->request->getBody();
header("Content-Type: application/json");
$json_decode = json_decode($json); // $json_decode conte l'bjecte format a partir del json del request
echo $json_decode->{'tipus'};
// $sql = "INSERt INTO atributs_actiu (nomAtribut, midaAtribut, tipus_actius_idtipus_actius, atributObligatori, ordre, tipusAtributs_idTipus, observacions
// , combo_idcombo, combo_codi) values ('".$json_decode->{'nomAtribut'}."', '".$json_decode->{'mida'}."', 1, '0', 1, 1, 'atribut de prova', 1, 1)";
$sql = "INSERt INTO atributs_actiu (nomAtribut, midaAtribut, tipus_actius_idtipus_actius, atributObligatori, ordre, tipusAtributs_idTipus, observacions
, combo_idcombo, combo_codi) values ('".$json_decode->{'nomAtribut'}."', '3', 1, '0', 1, 1, 'atribut de prova', 1, 1)";
$mysqli=getDB();
$result = $mysqli->query($sql);
});
解决:就像@vidriduch告诉的那样:
$scope.sendRow = function() {
var d = {
'nomAtribut': 'marca',
'tipus': 'String',
'mida': '15',
'prioritat': '1',
'obligatori': 'No'
};
$http.post("http://10.0.203.73/WS/ws.php/tipusactius/alta", angular.toJson(d)).success(function(data) {
$scope.status = data;
})};
angular.toJson 将输入序列化为 JSON 格式的字符串
https://docs.angularjs.org/api/ng/function/angular.toJson
在您的情况下,您正在序列化字符串...
您的代码可能如下所示:
$scope.sendRow = function() {
var d = {
'nomAtribut': 'marca',
'tipus': 'String',
'mida': '15',
'prioritat': '1',
'obligatori': 'No'
};
$http.post("http://10.0.203.73/WS/ws.php/tipusactius/alta", angular.toJson(d)).success(function(data) {
$scope.status = data;
})};
如果要将JSON
字符串转换为JavaScript
对象,则应使用 angular.fromJson()
方法。
另外,请确保将JSON
中的单引号'
转换为"
的双引号:
// ' becomes " in your string
var d = '{"nomAtribut": "marca","tipus": "String","mida": "15","prioritat": "1","obligatori": "No"}';
$http.post("http://10.0.203.73/WS/ws.php/tipusactius/alta", angular.fromJson(d))
.success(function(data){
$scope.status = data;
}
确保您的 JSON 参数未被任意引用锁定。
将 JSON 字符串分配给变量并直接传递它将在这里起作用。
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- 如何在Javascript中将JSon对象转换为数组
- 使用JS将数组转换为json对象
- 如何使用json将对象列表从java转换为javascript
- 偶尔结结巴巴地说“;堆叠的”;translate()上的转换(v4.0.0-alpha40)
- 为什么在单独的函数中应用时转换会闪烁/断断续续(D3)
- 在Javascript中转换对象数组
- 将数字转换为一定数量的硬币
- 将纯文本URL转换为可单击链接
- 当图像转换为本地存储的DataURL时,EXIF被删除
- 如何使用js将SNAPSHOT内部版本号转换为3位数的整数
- 如何将TypeScript对象转换为普通对象
- 检测个位数整数时正在转换毫秒
- 从javascript到jquery的转换
- DOM事件通过JSON转换为java
- 如何使用jquery将base64图像路径转换为真实路径
- 在OpenNI中将Zigfu关节位置从真实世界转换为类似投影的位置
- 在 Angular 中将 JSON 格式字符串转换为真实对象
- 如何将文本链接转换为谷歌 API 剥离的真实链接
- 将./转换为真实目录PHP