কৌণিক জেএস data http.get অনুরোধে ডেটা পাস করছে


576

আমার একটি ফাংশন রয়েছে যা একটি পোষ্ট পোস্টের অনুরোধ করে। কোডটি নীচে নির্দিষ্ট করা আছে। এটি কাজ করে।

 $http({
   url: user.update_path, 
   method: "POST",
   data: {user_id: user.id, draft: true}
 });

HTTP GET এর জন্য আমার আরও একটি ফাংশন রয়েছে এবং আমি সেই অনুরোধে ডেটা প্রেরণ করতে চাই। তবে আমার কাছে সেই বিকল্প নেই।

 $http({
   url: user.details_path, 
   method: "GET",
   data: {user_id: user.id}
 });

জন্য সিনট্যাক্স http.getহল

(ইউআরএল, কনফিগার) পান

উত্তর:


942

এইচটিটিপি জিইটি অনুরোধে সার্ভারে পোস্ট করার জন্য ডেটা থাকতে পারে না। তবে আপনি অনুরোধে একটি ক্যোরি স্ট্রিং যুক্ত করতে পারেন।

কৌণিক। HTTP এটির জন্য একটি বিকল্প সরবরাহ করে params

$http({
    url: user.details_path, 
    method: "GET",
    params: {user_id: user.id}
 });

দেখুন: http://docs.angularjs.org/api/ng.$http#get এবং https://docs.angularjs.org/api/ng/service/$http#usage ( paramsপ্যারাম দেখায় )


17
এটি একটি প্রতিশ্রুতি ফিরিয়ে দেবে
কনার জোঁক

1
প্রতিশ্রুতি সহ কোড: $ http ({পদ্ধতি: 'GET', url: '/ কিছু ইউআরএল'।)। সাফল্য (ফাংশন (ডেটা, স্থিতি, শিরোনাম, কনফিগারেশন) {// প্রতিক্রিয়া উপলভ্য হলে এই কলব্যাকটিকে অ্যাসিঙ্ক্রোনালি // বলা হবে})। ত্রুটি (ফাংশন (ডেটা, স্থিতি, শিরোনাম, কনফিগারেশন)) error // ত্রুটি দেখা দিলে অ্যাসিক্রোনজলি বলা হয় // বা সার্ভার একটি ত্রুটি স্থিতির সাথে প্রতিক্রিয়া ফিরিয়ে দেয়});
এহুদ গ্র্যান্ড

130
কৌণিক এছাড়াও মধ্যে কার্যকারিতা সরবরাহ করে $http.get(url.details_path, {params: {user_id: user.id}})
এনপেনাক্স

15
এইচটিটিপি ক্রিয়াগুলির মধ্যে অবজেক্ট কীটি সামঞ্জস্য রাখলে ভাল হত ... পোস্টের জন্য ডেটা থাকা এবং জিইটি-র জন্য প্যারামগুলি বিপরীত।
হুবার্ট পেরোন

7
@ হুবার্টপেরন প্রকৃতপক্ষে এটি বিপরীত নয় কারণ এগুলি বিভিন্ন জিনিস: ডেটা কোনও বস্তু / মডেলকে উপস্থাপন করতে পারে, এমনকি বাসা বাঁধতে পারে এবং পোষ্ট শিরোনামের অংশ হয়ে যায় ... পারমস আপনাকে জিইটি ইউআরএলে কী যুক্ত করতে পারে তা প্রতিনিধিত্ব করে, যেখানে প্রতিটি সম্পত্তি একটি প্রতিনিধিত্ব করে ইউআরএলে ক্যোরিস্ট্রিংয়ের অংশ। এটির নামকরণের ভিন্নতা রয়েছে এটি ভাল কারণ এটি আপনাকে কিছু আলাদা কাজ করছে তা সম্পর্কে আপনাকে সচেতন করে তোলে।
জোস

520

আপনি নীচের কাজগুলিতে সরাসরি প্যারামগুলি পাস করতে পারেন$http.get()

$http.get(user.details_path, {
    params: { user_id: user.id }
});

2
এটি কাজ করে তবে প্যারাম অবজেক্ট স্ট্রিংয়ে রূপান্তরিত হচ্ছে। আমি কীভাবে আসল অবজেক্টটি ধরে রাখতে পারি?
wdphd

13
@ ডাব্লুএইচডিডিডি এটি এইচটিটিপির সহজাত যে এটি একটি ক্যোয়ারিং স্ট্রিং
উলি কাহলর

1
@ অলি কাহলার: হ্যাঁ, এটিকে মিস করেছেন। আমি ইউআই রাউটারের লাইন ধরে ভাবছিলাম যেখানে আপনি প্যারামগুলির ডেটা টাইপ নির্দিষ্ট করতে পারেন। ব্যাকএন্ডে একটি সাধারণ পার্সেন্টের সাথে এটি স্থির করে।
wdphd

2
আপনি প্রদত্ত ইউআরএলটিতে জিইটি পরামিতি যুক্ত করতে এবং পুরোপুরি সূক্ষ্মভাবে কাজ করতে চাইলে এটি সঠিক সমাধান।
এনপেনাক্স


43

AngularJS v1.4.8 থেকে শুরু করে আপনি get(url, config) নিম্নলিখিত হিসাবে ব্যবহার করতে পারেন :

var data = {
 user_id:user.id
};

var config = {
 params: data,
 headers : {'Accept' : 'application/json'}
};

$http.get(user.details_path, config).then(function(response) {
   // process response here..
 }, function(response) {
});

1
তবে এই তথ্যটি এখনও একটি অনুরোধ সংস্থায় নেই।
নেক্সা

@ এনএক্সএ জিইটি কেবল কনভেনশন দ্বারা ইউআরএল প্যারাম হওয়া উচিত, যাতে প্রযুক্তিগতভাবে এটি কার্যকর হতে পারে এবং তা বোঝাতে পারে এমনকি, অনেক কাঠামো এটিকে সর্বোত্তম অনুশীলন প্রয়োগ করতে দেয় না।
ক্রিস্টোফ রাউসি

1
যদি কেবল অ্যাঙ্গুলারজেএস ডকুমেন্টেশনগুলি এই সাধারণ উদাহরণটি সরবরাহ করতে পারত!
নরবার্ট নরবার্টসন

@ অর্পিত আগরওয়াল গোলং ওয়েব সার্ভার এবং vue.js এর সাথে আমার অনুরূপ প্রশ্নটি দেখার জন্য কি আপনি এত দয়াবান হবেন? স্ট্যাকওভারফ্লো.com
user2315094

33

যারা GET অনুরোধে প্যারাম এবং শিরোনাম প্রেরণে আগ্রহী তাদের জন্য সমাধান

$http.get('https://www.your-website.com/api/users.json', {
        params:  {page: 1, limit: 100, sort: 'name', direction: 'desc'},
        headers: {'Authorization': 'Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=='}
    }
)
.then(function(response) {
    // Request completed successfully
}, function(x) {
    // Request error
});

সম্পূর্ণ পরিষেবার উদাহরণটি এর মতো দেখবে

var mainApp = angular.module("mainApp", []);

mainApp.service('UserService', function($http, $q){

   this.getUsers = function(page = 1, limit = 100, sort = 'id', direction = 'desc') {

        var dfrd = $q.defer();
        $http.get('https://www.your-website.com/api/users.json', 
            {
                params:{page: page, limit: limit, sort: sort, direction: direction},
                headers: {Authorization: 'Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=='}
            }
        )
        .then(function(response) {
            if ( response.data.success == true ) { 

            } else {

            }
        }, function(x) {

            dfrd.reject(true);
        });
        return dfrd.promise;
   }

});

প্রতিক্রিয়া ডেটা কীভাবে কোনও নিয়ামক হিসাবে ব্যবহৃত হবে? ধন্যবাদ।
ফ্লোরিস

3

এমনকি আপনি ইউআরএলের শেষে প্যারামিটারগুলি কেবল যুক্ত করতে পারেন:

$http.get('path/to/script.php?param=hello').success(function(data) {
    alert(data);
});

স্ক্রিপ্ট.এফপি যুক্ত:

<? var_dump($_GET); ?>

নিম্নলিখিত জাভাস্ক্রিপ্ট সতর্কতা ফলাফল:

array(1) {  
    ["param"]=>  
    string(4) "hello"
}

2
$ HT কি কোনও পালাতে পারে?
মাইকেল কোল

2
এটি খুব কার্যকর হয় তবে সমস্যাটি হ'ল আপনার একাধিক পরামিতি থাকলে এটি ইউআরএল শেষে যুক্ত করে ব্যথা হয়ে ওঠে যদি আপনি কোনও পরিবর্তনশীল নাম পরিবর্তন করেন তবে আপনাকে এসে ইউআরএলও পরিবর্তন করতে হবে।
ব্যবহারকারী 37181888

আমি জানি. এটি আরও একটি বিক্ষোভ ছিল, এটি দেখানো যে আপনি এমনকি এটি নিয়মিত উপায়ে করতে পারেন , আমি এটি সুপারিশ করি না। (যেখানে 'নিয়মিত উপায়' এর অর্থ আপনি কীভাবে সম্ভবত পিএইচপি দিয়ে বছরের পর বছর এটি
সম্পাদন করেছেন

2

এএসপি.নেট এমভিসিতে অ্যাঙ্গুলার.জেএস ব্যবহার করে প্যারামিটারগুলির সাথে এইচটিটিপি জিইটি অনুরোধের সম্পূর্ণ উদাহরণ এখানে রয়েছে:

নিয়ামক:

public class AngularController : Controller
{
    public JsonResult GetFullName(string name, string surname)
    {
        System.Diagnostics.Debugger.Break();
        return Json(new { fullName = String.Format("{0} {1}",name,surname) }, JsonRequestBehavior.AllowGet);
    }
}

দেখুন:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<script type="text/javascript">
    var myApp = angular.module("app", []);

    myApp.controller('controller', function ($scope, $http) {

        $scope.GetFullName = function (employee) {

            //The url is as follows - ControllerName/ActionName?name=nameValue&surname=surnameValue

            $http.get("/Angular/GetFullName?name=" + $scope.name + "&surname=" + $scope.surname).
            success(function (data, status, headers, config) {
                alert('Your full name is - ' + data.fullName);
            }).
            error(function (data, status, headers, config) {
                alert("An error occurred during the AJAX request");
            });

        }
    });

</script>

<div ng-app="app" ng-controller="controller">

    <input type="text" ng-model="name" />
    <input type="text" ng-model="surname" />
    <input type="button" ng-click="GetFullName()" value="Get Full Name" />
</div>

আইএমএইচও সহ সিনট্যাক্সটি params'ম্যানুয়াল' ইউআরএল কনটাক্টের চেয়ে কম ত্রুটিযুক্ত
ক্রিস্টোফ রাউসি

1

আমি ব্যবহার পরামিতি সঙ্গে অনুরোধ পেতে প্রেরণ জন্য

  $http.get('urlPartOne\\'+parameter+'\\urlPartTwo')

এটির মাধ্যমে আপনি নিজের ইউআরএল স্ট্রিং ব্যবহার করতে পারেন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.