Fnameとlnameとして対応するng-modelを持つ2つの入力ボックスがあると仮定します。 httpリクエストを次のように呼び出した場合:
$http({method:'GET', url:'/search', params:{fname: fname, lname: lname}})
urlを呼び出しますか:
/search?fname=fname&lname=lname
私がバックエンド(python)で得ているエラーは次のとおりです:
cannot concatenate str and nontype objects.
これらのパラメーターは文字列として送信されませんか?そうでない場合、これをどうやって回避するのですか?
方法は次のとおりです。
$http.get("/url/to/resource/", {params:{"param1": val1, "param2": val2}})
.then(function (response) { /* */ })...
Maxim Shoustinの答えは機能せず({method:'GET', url:'/search', jsonData}
は有効なJavaScriptリテラルではありません)、JeyThevaの答えは単純ですが、XSSを許可するため危険です(安全でない値は連結してもエスケープされません)。
URL '/search'
を文字列として作成します。好む
"/search?fname="+fname"+"&lname="+lname
実際に私は使用しませんでした
`$http({method:'GET', url:'/search', params:{fname: fname, lname: lname}})`
しかし、「params」はPOST
のようにJSON.stringify
でなければなりません
var jsonData = JSON.stringify(
{
fname: fname,
lname: lname
}
);
後:
$http({
method:'GET',
url:'/search',
params: jsonData
});
ルートプロバイダーから値を渡す簡単な方法を次に示します
//Route Provider
$routeProvider.when("/page/:val1/:val2/:val3",{controller:pageCTRL, templateUrl: 'pages.html'});
//Controller
$http.get( 'page.php?val1='+$routeParams.val1 +'&val2='+$routeParams.val2 +'&val3='+$routeParams.val3 , { cache: true})
.then(function(res){
//....
})
入力データを使用して、HTMLファイルのパラメーターとして渡すことができます。ng-modelを使用して、入力フィールドの値をバインドします。
<input type="text" placeholder="Enter your Email" ng-model="email" required>
<input type="text" placeholder="Enter your password " ng-model="password" required>
また、jsファイルでは、$ scopeを使用してこのデータにアクセスします。
$scope.email="";
$scope.password="";
コントローラー機能は次のようになります。
var app = angular.module('myApp', []);
app.controller('assignController', function($scope, $http) {
$scope.email="";
$scope.password="";
$http({
method: "POST",
url: "http://localhost:3000/users/sign_in",
params: {email: $scope.email, password: $scope.password}
}).then(function mySuccess(response) {
// a string, or an object, carrying the response from the server.
$scope.myRes = response.data;
$scope.statuscode = response.status;
}, function myError(response) {
$scope.myRes = response.statusText;
});
});