AngularJS - JSON和Coldfusion请求中的特殊字符

时间:2017-06-27 06:41:39

标签: angularjs json string serialization coldfusion

我正在尝试使用JSON字符串在数据库中执行INSERT。我正在使用AngularJS和Coldfusion来做到这一点。

感谢我检索数据的表单,我在服务(控制器)中创建了一个对象,感谢工厂我做了一个$ http.post。我的问题涉及发送给它的字符串:字符串包含特殊字符(例如“&”,我不知道如何处理这类问题。

这里是发送字符串的示例:

jsStruct={"LASTNAME":"Nämé","FIRSTN%a£öME":"TestFirstName","PHONENUMBER":48484488,"EMAIL":"tes.test@test.test","COMPANY":"Test & Comp"}

我的控制器:

app.controller('ctrlAddContacts', function ($scope, ContactService){

    // WHEN SUBMITTING THE FORM -> SEND THE DATA STRING 
    $scope.submitForm = function(contact){
        if($scope.ContactForm.$valid){

            // CALL THE FACTORY -> SEND THE DATA STRING 
            ContactService.addNewPerson(contact).success(function(Person){
                $scope.ContactForm.$setPristine();
                $scope.contact= Person;     

            });     
        }
    }
});

我的工厂:

app.factory('ContactService', function($http){

    var factory={};

    factory.addNewPerson=function(objContact){

        return $http.post('http://myapp/contacts.cfc?method=addNewPerson&jsStruct=' + JSON.stringify(objContact))
    };  

    return factory;

})

在我的Coldfusion组件“contacts.cfc”中:

    <cffunction name="addNewPerson" access="remote" returnformat="JSON" output="no">    
        <cfargument name="jsStruct" type="string" required="true">
        <cfset var cfStruct=DeserializeJSON(jsStruct)>

        ..................

    </cffunction>   

我在服务器上收到此错误,因为在我的字符串中有“COMPANY”:“Test&amp; Comp”

JSON parsing failure: Unexpected end of JSON string 

请问你帮我解决这个问题,防止Coldfusion和Oracle使用的特殊字符为&amp;,#,',“和其他人?

提前谢谢。

2 个答案:

答案 0 :(得分:0)

我刚试过解析你的JSON。它对我有用。我想服务器端使用的 JSON解析器不支持特殊字符。

var jsStruct={"LASTNAME":"Nämé","FIRSTN%a£öME":"TestFirstName","PHONENUMBER":48484488,"EMAIL":"tes.test@test.test","COMPANY":"Test & Comp"};

var parsedJSON = JSON.parse(JSON.stringify(jsStruct));
console.log(parsedJSON,"parsedJSON")

编辑1:

根据您的错误消息:JSON解析失败:JSON字符串的意外结束

您正在尝试将字符串解析为JSON,而字符串不是JSON。错误不适用于特殊字符。

答案 1 :(得分:-1)

事实上我们要求DBA更改DSN以使用不同的驱动程序并且问题已经解决