struts2.1.8 ,使用自带json插件struts2-json-plugin-2.1.8.1.客户端得不到json对象,弹出下载action提示框

struts2.1.8 ,使用自带struts2-json-plugin-2.1.8.1.jar把action对象返回客户端的json对象。注释配置,客户端总是弹出下载页面,打开后是正常的json数据,各位可以帮忙看看?代码很简单,困老好几天了,非常感谢,代码如下:
Java代码

import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.test.product.bean.ScmProdUnit;
import com.opensymphony.xwork2.ActionSupport;
@Controller

@Scope("prototype")

@ParentPackage("json-default")

@Results( {

@Result(name = "success",type = "json")

})

public class JsonTestAction extends ActionSupport {

private static final long serialVersionUID = -6933656224417288484L;   
private ScmProdUnit scmProdUnit;    

// @Action(results={@Result(type="json",name="success",params ={"root","scmProdUnit" })})

public String querybyB() throws Exception {

    System.err.println("2222222");     
    scmProdUnit = new ScmProdUnit();   
    scmProdUnit.setId(1);   
    scmProdUnit.setCode("jsoncode");           
    scmProdUnit.setName("json数据");   
    scmProdUnit.setRemark("测试");   
    return SUCCESS;   
}   


public ScmProdUnit getScmProdUnit() {   
    return scmProdUnit;   
}   


public void setScmProdUnit(ScmProdUnit scmProdUnit) {   
    this.scmProdUnit = scmProdUnit;   
}   

}

}

@Controller
@Scope("prototype")
@ParentPackage("json-default")
@Results( {
@Result(name = "success",type = "json")

})
public class JsonTestAction extends ActionSupport {

private static final long serialVersionUID = -6933656224417288484L;
private ScmProdUnit scmProdUnit; 

// @Action(results={@Result(type="json",name="success",params ={"root","scmProdUnit" })})

public String querybyB() throws Exception {

    System.err.println("2222222");  
    scmProdUnit = new ScmProdUnit();
    scmProdUnit.setId(1);
    scmProdUnit.setCode("jsoncode");        
    scmProdUnit.setName("json数据");
    scmProdUnit.setRemark("测试");
    return SUCCESS;
}


public ScmProdUnit getScmProdUnit() {
    return scmProdUnit;
}


public void setScmProdUnit(ScmProdUnit scmProdUnit) {
    this.scmProdUnit = scmProdUnit;
}

}

}
ProdUnit 只是一个很简单的pojo,前台代码如下
Java代码
function getjsontest()

{

$.post("json-test!querybyB.action",

{

},function(returnData,status)

{

if("success" == status)

{

alert(returnData.length); }

},"json"

);

}

function getjsontest()
{
$.post("json-test!querybyB.action",
{

},function(returnData,status)
{
if("success" == status)
{
alert(returnData.length); }
},"json"
);
}

当我在一个测试页面button里掉这个function时候,总是弹出action下载页面,下载打开后,里面的json对象数据好像没错啊,如下:
{"scmProdUnit":{"code":"jsoncode","id":1,"name":"json数据","remark":"测试"}},调用js的时候returnData总是返回null值,为啥啊?郁闷了几天了,麻烦看看

2个回答

javascript:getjsontest2 应该是 javascript:getjsontest

返回格式是json 应该使用 $.getJSON(url,data,callback) 函数

json 插件使用application/json头文件,浏览器不能正常识别头文件。所以会弹出下载框。如果使用ajax请求不会出现这种问题。你可以设置json 插件contentType属性改变头文件即可application/html。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!