Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.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
Javascript 将数据作为json发布到不在Phantomjs中工作的Servlet_Javascript_Json_Servlets_Phantomjs_Velocity - Fatal编程技术网

Javascript 将数据作为json发布到不在Phantomjs中工作的Servlet

Javascript 将数据作为json发布到不在Phantomjs中工作的Servlet,javascript,json,servlets,phantomjs,velocity,Javascript,Json,Servlets,Phantomjs,Velocity,我在这里面临着非常奇怪的问题。我的机器上运行着一个servlet,它根据一些输入参数呈现我的网页 现在,如果我尝试将数据作为JSON对象作为POST请求类型发送,那么我的PhantomJS屏幕截图将无法工作。例如,如果我尝试: 客户端 var data = {"op": "get"}; page.open(address, 'POST', data, function (status) { if (status !== 'success') { console.log('[ERROR]

我在这里面临着非常奇怪的问题。我的机器上运行着一个servlet,它根据一些输入参数呈现我的网页

现在,如果我尝试将数据作为JSON对象作为POST请求类型发送,那么我的PhantomJS屏幕截图将无法工作。例如,如果我尝试:

客户端

var data = {"op": "get"};

page.open(address, 'POST', data, function (status) {
if (status !== 'success') {
    console.log('[ERROR] :: Unable to fetch the address - ' + address + ", with data - " + data);
    phantom.exit();
} else {
    page.render(output);        
}
console.log('processing...');
});
服务器端

var data = {"op": "get"};

page.open(address, 'POST', data, function (status) {
if (status !== 'success') {
    console.log('[ERROR] :: Unable to fetch the address - ' + address + ", with data - " + data);
    phantom.exit();
} else {
    page.render(output);        
}
console.log('processing...');
});
现在,在服务器端,我使用Apache Velocity视图模板,因此我有一个方法可以处理get和post,如下所示:

public Template handleRequest(HttpServletRequest request, HttpServletResponse response,
        Context context){
   System.out.println(request.getParameter("op"));
   //Always null
}
但是,如果我尝试以以下方式从phantomjs发送数据:

var data = "op=get&..."
It works
另外,在我的代码的其他地方,我正在对同一个servlet执行Ajax POST请求,它可以完美地处理所有这些请求


有人能解释为什么我的servlet没有读取从Phantomjs传递的JSON参数吗?

servlet处理简单的请求,因此它们只知道如何解析(本机)HTTP参数,或者从URL获取参数,或者作为
应用程序/x-www-form-urlencoded
发送的
POST
参数。Servlet规范的较新版本还可以读取
多部分/表单数据


但是Servlet或HTTP规范中都没有提到JSON。因此,您必须使用一个知道如何解析JSON并使生成的对象在Velocity上下文中可用的库。

servlet处理简单的请求,因此它们只知道如何解析(本机)HTTP参数,或者从URL获取参数,或
POST
参数作为
application/x-www-form-urlencoded
发送。Servlet规范的较新版本还可以读取
多部分/表单数据

但是Servlet或HTTP规范中都没有提到JSON。因此,您必须使用一个知道如何解析JSON并使生成的对象在Velocity上下文中可用的库