2016-04-02 19 views
0

ng-resource kullanarak sunucuya bir dize gönderiyorum. Herhangi bir noktada dize içine & eklerseniz, &'dan sonraki karakterler sunucuya gönderilmez. & Sunucuya Gönderildiğinde Dize Bölünme Nedenleri

Mesela ben sunucuya dize gönderirseniz:

"This part of the string is shown & this part of the string is NOT shown" 

herşey & sonra hiçbir zaman gösterilmez. Sunucuya gönderilmeden önce kesilmiş gibi.

İşte bir çalışma kodu örneği.

angular.module('testApp', ['ngResource']) 

.service('TestService', testService) 

.controller('Controller', theController); 

function testService() { 
    this.$get = get; 

    get.$inject = ['$resource']; 

    function get($resource) { 
    var baseUrl = window.location['origin']; 

    var theResource = $resource(
     baseUrl + '/test_url', 
     {}, 
     { 
     testMe: {method: 'GET', url: '/test_url'} 
     } 
    ) 

    return theResource; 
    } 
} 

theController.$inject = ["TestService"]; 

function theController(TestService) { 
    activate(); 

    function activate() { 
    var stringToSend = "this part of the string is shown & this part of the string will NOT be shown"; 

    // The server will only see the text "this part of the string is shown &" 
    TestService.testMe({stringParam: stringToSend}, function(resp) {}); 
    } 
} 

Sorun nedir ve nasıl düzeltirim?

PS: not shown'u kastettiğimde, dizenin bu bölümü hiç gönderilmediyse sanırım.

+0

şey URL'ye sıkıştırmadığınızı önce dizeyi Kodlama URL değildir. Yine de stringParam'ın bu kodda okunduğu yeri bulamıyorum. – Quentin

+0

Bunun nedeni, sorgu dizesininin bir parçası olarak göndermeniz ve parametrelerin bölünmesi için sorgu dizesinin bir parçası olarak çalışmanızdır. Bunun yerine bir posta isteği olarak göndermeyi deneyin. Parametreleri talep gövdesine sarmalı ve sonra hepsini alacaksınız. –

+0

"encodeURI" yanıtını gönderen kişi doğruydu. Maalesef cevabı sildiler. – jason328

cevap

1

encode dizesini encodeURI yöntemini kullanarak sunucuya göndermeden önce yapın. Parametre kodunun çözülmesinin otomatik olarak gerçekleşeceğini düşünüyorum.

Kod

TestService.testMe({ 
    stringParam: encodeURI(stringToSend) 
}, function(resp) {}); 
+0

Çalışmaları !!! Teşekkürler. – jason328

+0

@ jason328 bunu duyduğuma sevindim. Teşekkürler :-) –

İlgili konular