Я все еще изучаю AngularJS, так что я не совсем уверен, как лучше всего это реализовать;
Я бы отлично справился с этим в обычном HTML, но не смог использовать свойство selected, поэтому я переключился на элемент Angular, который я новичок в использовании.
У меня есть форма с выпадающим списком, где пользователь выбирает «Пользователь» или «Администратор». Пользователь имеет значение «2», где Администратор имеет значение «1».
По умолчанию «Пользователь» является предварительно выбранным элементом в списке.
Моя проблема заключается в том, что когда форма отправляется (через AJAX) в PHP, форма отправляет объект, такой как {value : "2", name : "User"}
, где я хочу, чтобы он просто отправлял значение, то есть: "2".
HTML код:
<div class="form-group col-md-6">
<label for="usrlevel">User Level:</label>
<select class="form-control form-control-sm"
data-ng-init="formData.usrlevel = usrlevels[0]"
data-ng-model="formData.usrlevel"
data-ng-options="x.name for x in usrlevels">
</select>
</div>
код Javascript:
app.controller("admController", function ($scope, $http, $location) {
$scope.usrlevels = [
{value : "2", name : "User"},
{value : "1", name : "Administrator"}
];
$scope.addForm = function() {
var ans="";
$http({
method : 'POST',
url : 'php/addstaff.php',
data : $.param($scope.formData),
headers : { 'Content-Type': 'application/x-www-form-urlencoded' } //set the headers so angular passing info as form data (not request payload)
}).then(function (response) {
console.log(response.data);
ans = response.data;
if (!ans.success) {
// Add Error handling
} else {
$('#addModal').modal('hide');
$scope.getStaff(); //refreshes table display
}
}).catch(function(response){
console.log(response.data);
});
};
А вот изображение отладчика, показывающее, что для «usrlevel» форма отправляет объект, тогда как она должна просто передавать значение выбранного элемента.
Таким образом, в отладчике он должен просто показывать usrlevel:"2"
![enter image description here](https://i.stack.imgur.com/2gN5t.jpg)
UPDATE:
Поскольку люди, кажется, находятся под впечатлением, что вызов AJAX должен представлять только пользовательский уровень (я думал, что изображение окна отладчика прояснит, что пользовательский уровень равен 1 элементу в форме), вот фактическая HTML-форма.
<form data-ng-submit="addForm()" name="addform" method="POST">
<div class="form-group">
<label for="name">Full Name:</label>
<input type="text" class="form-control form-control-sm" name="name" data-ng-model="formData.name" id="name" placeholder="">
</div>
<div class="form-group">
<label for="address">Address:</label>
<input type="text" class="form-control form-control-sm" name="address" data-ng-model="formData.address" id="address" placeholder="">
</div>
<div class="form-group">
<label for="suburb">Suburb:</label>
<input type="text" class="form-control form-control-sm" name="suburb" data-ng-model="formData.suburb" id="suburb" placeholder="">
</div>
<div class="form-group">
<label for="phone">Phone:</label>
<input type="tel" class="form-control form-control-sm" name="phone" data-ng-model="formData.phone" id="phone" placeholder="">
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label for="postcode">Post Code:</label>
<input type="text" class="form-control form-control-sm" name="postcode" data-ng-model="formData.postcode" id="postcode" placeholder="">
</div>
<div class="form-group col-md-6">
<label for="usrlevel">User Level:</label>
<select class="form-control form-control-sm" data-ng-init="formData.usrlevel = usrlevels[0]" data-ng-model="formData.usrlevel" data-ng-options="x.name for x in usrlevels"></select>
</div>
</div>
<div class="form-group">
<label for="email">Email:</label>
<input type="email" class="form-control form-control-sm" name="email" data-ng-model="formData.email" id="email" placeholder="">
</div>
<div class="form-group">
<label for="suburb">Password:</label>
<input type="password" class="form-control form-control-sm" name="password" data-ng-model="formData.password" id="password" placeholder="">
</div>
<button type="submit" class="btn btn-primary">Submit</button>
<button type="reset" value="Reset" class="btn btn-secondry">Clear</button>