พารามิเตอร์รับ $ http ไม่ทำงาน


93

ไม่มีใครรู้ว่าทำไมถึงใช้ไม่ได้?

$http
    .get('accept.php', {
        source: link,
        category_id: category
    })
    .success(function (data, status) {
        $scope.info_show = data
    });

และสิ่งนี้ได้ผล:

$http
    .get('accept.php?source=' + link + '&category_id=' + category)
    .success(function (data, status) {
        $scope.info_show = data
    });

คำตอบ:


191

พารามิเตอร์ที่ 2 ในการgetเรียกคือออบเจ็กต์ config คุณต้องการสิ่งนี้:

$http
    .get('accept.php', {
        params: {
            source: link,
            category_id: category
        }
     })
     .success(function (data,status) {
          $scope.info_show = data
     });

ดูส่วนอาร์กิวเมนต์ของhttp://docs.angularjs.org/api/ng.$httpสำหรับรายละเอียดเพิ่มเติม


หมายเหตุใช้paramsดังกล่าวยังจะช่วยแก้ปัญหาของการร้องขอการ GET dataไม่ได้ใช้ AngularJS จะไม่จัดเรียงสิ่งนี้เองเหมือนที่ jQuery ทำ (ฉันไม่คิดว่านั่นเป็นสิ่งที่ดีหรือไม่ดีเพียง แต่แตกต่างกันและอาจทำให้ผู้คนสนใจ)
DanielM

ฉันไม่ได้กำหนดคุณสมบัติค่าคีย์ของฉันภายในออบเจ็กต์ params สิ่งนี้ควรแตกต่างในบริการหรือไม่?
Winnemucca

2
นอกจากนี้เมื่อparamsวัตถุว่างเปล่าหรือคุณสมบัติทั้งหมดเป็นnullหรือundefinedไม่มีอะไรจะถูกเพิ่มลงในสตริงการสืบค้น
nfang

3

จาก$http.getเอกสารพารามิเตอร์ที่สองคือออบเจ็กต์การกำหนดค่า:

get(url, [config]);

วิธีทางลัดเพื่อดำเนินการGETตามคำขอ

คุณสามารถเปลี่ยนรหัสของคุณเป็น:

$http.get('accept.php', {
    params: {
        source: link, 
        category_id: category
    }
});

หรือ:

$http({
    url: 'accept.php', 
    method: 'GET',
    params: { 
        source: link, 
        category_id: category
    }
});

เพื่อเป็นข้อสังเกตเนื่องจากไม่ควรใช้Angular 1.6 : .success อีกต่อไปให้ใช้.thenแทน:

$http.get('/url', config).then(successCallback, errorCallback);
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.