2016-04-02 4 views
0

Ich sende eine Zeichenfolge an den Server mit ng-resource. Wenn ich an irgendeiner Stelle & in die Zeichenfolge einfüge, werden die Zeichen nach & nicht an den Server gesendet.& Ursachen String zu teilen, wenn an Server gesendet

Zum Beispiel, wenn ich die Zeichenfolge an den Server senden:

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

alles nach & nie gezeigt. Es ist so, als wäre es zerhackt, bevor es zum Server gesendet wird.

Hier ist ein Arbeitscode Beispiel.

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) {}); 
    } 
} 

Was ist falsch und wie behebe ich das?

PS: Wenn ich meine not shown, meine ich, es ist, als ob dieser Teil der Zeichenfolge nie gesendet wurde.

+0

Etwas URL nicht die String-Codierung, bevor es in der URL kleben. Ich kann jedoch nicht finden, wo 'stringParam' in diesem Code gelesen wird. – Quentin

+0

Dies liegt daran, dass Sie es als Teil der Abfragezeichenfolge und als Teil der Abfragezeichenfolge senden, um die Parameter zu teilen. Versuchen Sie stattdessen, es als Postanforderung zu senden. Es sollte die Parameter in den Anfragetext umhüllen und dann erhalten Sie alles. –

+0

Wer die 'encodeURI' Antwort gepostet hat, war richtig. Leider löschten sie die Antwort. – jason328

Antwort

1

Do encode die Zeichenfolge vor dem Senden an den Server mit encodeURI Methode. Ich denke, Decodierung von Parameterwert wird automatisch geschehen.

-Code

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

funktioniert !!! Vielen Dank. – jason328

+0

@ jason328 froh, das zu hören. Vielen Dank :-) –

Verwandte Themen