Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json angularjs$http success数据参数未返回正确的对象_Json_Angularjs_Servlets_Post - Fatal编程技术网

Json angularjs$http success数据参数未返回正确的对象

Json angularjs$http success数据参数未返回正确的对象,json,angularjs,servlets,post,Json,Angularjs,Servlets,Post,我使用$http发布一个angularjs变量,我确实在servlet的doPost方法中收到了JSON等价物。当我在servlet的响应中写入JSON时,将调用$http.successdata、status、header、config。但是当我给angularjs变量赋值时,没有给变量赋值。尝试使用JSON.parsedata,但没有任何用处。下面是代码片段 安格拉斯 $scope.result = { title: "", subject: "", summary:

我使用$http发布一个angularjs变量,我确实在servlet的doPost方法中收到了JSON等价物。当我在servlet的响应中写入JSON时,将调用$http.successdata、status、header、config。但是当我给angularjs变量赋值时,没有给变量赋值。尝试使用JSON.parsedata,但没有任何用处。下面是代码片段

安格拉斯

$scope.result = {
    title: "",
    subject: "",
    summary: "",
    body: "",
    extra: ""
};

$http.post(url, JSON.stringify(obj)).
success(function(data, status, headers, config){
        $scope.result = JSON.parse(data);
        console.log("data: " + data);
        console.log("status: " + status);
        console.log("headers: " + headers);
        console.log("config: " + config);
    })
    .error(function(data, status, headers, config){
        $scope.result = JSON.parse(data);
        console.log("data: " + data);
        console.log("status: " + status);
        console.log("headers: " + headers);
        console.log("config: " + config);
    });
接收到响应时的控制台输出如下

data: [object Object]
status: 200 
headers: function (name) {
   if (!headersObj) headersObj =  parseHeaders(headers);

   if (name) {
      return headersObj[lowercase(name)] || null;
   }

   return headersObj;
  }
config: [object Object]
下面是servlet中的代码片段

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        System.out.println("doPost called");
        response.getWriter().write("{"title":"Transaction Status","subject":"Congratulations!!","summary":"Successfully received your request, below is your Transaction ID","body":"5a85fc3b303d47dca6514b707442f2cd","extra":"Please save this transaction ID for future reference"}");
    }
我无法在angularjs success函数中获取从doPost方法发送的JSON。这是正确的做法吗? Angularjs自动将收到的JSON转换为javascript对象类型,因此我必须能够直接将“数据”分配给$scope.result

如果有人能给我指出正确的方向,那就太好了。

用这个:

$http.post(url, $.param(obj), {
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
    }
})
如果不想使用jQuery$.param,可以使用另一种方法

$http.post(url, obj, {
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
    },
    transformRequest: function(obj) {
        var str = [];
        for(var p in obj)
        str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
        return str.join("&");
    }
})

数据是包含属性数据的对象。那房子里有你想要的东西。您可能希望将数据重命名为类似response的名称。如果您这样做了,您可以在不使用JSON的情况下分配response.data。我尝试了您的建议,下面是控制台输出。响应:未定义状态:200个标题:函数名{if!headersObj headersObj=parseHeadersheaders;if名称{return headersObj[lowercasename]| | null;}return headersObj;}common.js:113在成功函数中配置:[object object],添加console.dirdata并添加对您的问题的回答pleaseconsole.dir打印出整个对象,这就是我在其中找到的内容。正文:cb309b8454464a0e90b4aea3ecb7372c额外:请保存此交易ID以备将来参考主题:恭喜!!小结:成功收到您的请求,下面是您的交易ID标题:Transaction Status Million感谢您的帮助,它解决了我的问题。请问应该怎么做?将数据作为表单数据而不是请求Payload发送queryparams引用的是哪种方法?编辑:queryparams是一个错误