我有一个带有一个输入字段的表单,可以通过AJAX提交student id
,我从AJAX请求中获取一些JSON结果。现在,需要将来自AJAX请求的返回数据分配到表单下方输入字段( phone )中的ng-init
。请帮我知道如何将此值分配给ng-init
。谢谢!
HTML
<div ng-app="">
<form id="std_form">
<input type="text" name="sid" id="sid">
<input type="submit">
</form>
<input type="text" name="phone" ng-model="phone" ng-init="" id="phone">
Ph: {{phone}}
</div>
的jQuery
$('#std_form').submit(function(e){
e.preventDefault();
var val = $('#sid').val();
var dataString = "sid=" + val;
$.ajax({
type: "POST",
url: "post_process.php",
data: dataString,
dataType: 'json',
success: function(data){
$('#phone').val(data.phone);
}
});
});
post_process.php
<?php
if(ISSET($_POST['sid'])) {
$sid = $con->real_escape_string($_POST['sid']);
$sql = "SELECT phone FROM std_detials WHERE sid = $sid";
$result = $con->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
$phone = $row['phone'];
}
$json = array('phone' => $phone);
$json = json_encode($json);
echo $json;
}
?>
答案 0 :(得分:1)
您没有将ng-model用于学生ID字段。当角度表示角度时。 代码是PHP的传统提交技术和Jquery的ajax调用的混合。尝试尽可能地消除这种做法并正确地崇拜框架。
试试这段代码。理解并应用。
简要说明:
我使用了Angular的$http
帖子来代替jquery&#39; s $.ajax
。您可以保持相同的通话或使用原生的角度通话。
删除了一些不必要的标记。添加了ng-model到学生id的输入,ng-click功能到用于提交的按钮,并稍微构建了代码。如果你有一个单独的services.js文件用于项目添加服务代码,或者只是添加一个新服务,就像我在这里的代码中所做的那样。
所以基本上你不需要ng-init来解决这个问题。它应该在极少数情况下使用。请在这里阅读文档。 https://docs.angularjs.org/api/ng/directive/ngInit
希望它有所帮助!如果有任何问题,请告诉我。
<div ng-app="myApp">
<form id="std_form">
<input type="text" ng-model="sid">
<button ng-click="submitSid()"></button>
</form>
<input type="text" ng-model="phone">
Ph: {{phone}}
</div>
JS
var app = angular.module('myApp', []);
app.controller('MyCtrl', ['StudentService', function(StudentService){
$scope.submitSid = function(){
var data = {sid: $scope.sid};
StudentService.getStudentDetails(data).then(function(res){
console.log(res);
$scope.phone = res.phone; // Or change to res.paramName. Just check in console to confirm the res logged.
})
}
}]);
app.factory('StudentService', ['$http', '$httpParamSerializerJQLike', function($http, $httpParamSerializerJQLike){
var getStudentDetails = function(data){
var params = $httpParamSerializerJQLike(data);
return $http({
method: "POST",
url: "post_process.php",
headers: {'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;'},
data: params
}).then(function(response){
return response.data;
});
}
return {
getStudentDetails : getStudentDetails
}
}]);