为什么我的dojo xhrPost请求的响应总是以错误处理程序结束?

时间:2014-02-03 12:54:34

标签: javascript ajax dojo

我的javascript:

var params = {};
params.selectedCurrency = 'USD';
params.orderIdForTax = '500001';
var xhrArgs1 = {
                 url : 'UpdateCurrencyCmd',
                 handleAs : 'text',
                 content : params,
                 preventCache:false,
                 load:function(data){
                    alert('success!');
                 },
                 error: function(error){
                    alert(error);
                    //the alert says 'SyntaxError: syntax error'

                 },
                 timeout:100000
                };
    dojo.xhrPost(xhrArgs1);

我尝试用firebug调试,我确实得到了适当的响应(我认为)。这是;

/*
{
    "orderIdForTax": ["500001"],
    "selectedCurrency": ["USD"]
}
*/

注释/ *和* /以某种方式自动嵌入,因为使用xhrPost的网址实际上是ibm的websphere商业环境中的命令类。谁能告诉我这里我做错了什么?

服务器代码

public void performExecute() throws ECException {

try{
    super.performExecute();
    double taxTotal;
    System.out.println("Updating currency in UpdateCurrencyCmd...");
    GlobalizationContext cntxt = (GlobalizationContext) getCommandContext().getContext(GlobalizationContext.CONTEXT_NAME);
    if(requestProperties.containsKey("selectedCurrency"))
        selectedCurrency =  requestProperties.getString("selectedCurrency");
    else
        selectedCurrency = cntxt.getCurrency();

    if(requestProperties.containsKey("orderIdForTax"))
        orderId = requestProperties.getString("orderIdForTax");

    OrderAccessBean orderBean = new OrderAccessBean();
    cntxt.setCurrency(selectedCurrency.toUpperCase());
    orderBean.setInitKey_orderId(orderId);
    orderBean.refreshCopyHelper();
    orderBean.setCurrency(selectedCurrency.toUpperCase());
    orderBean.commitCopyHelper();

    TypedProperty rspProp = new TypedProperty(); 
    rspProp.put(ECConstants.EC_VIEWTASKNAME, "AjaxActionResponse");
    setResponseProperties(rspProp);


}catch(Exception e){
    System.out.println("Error: " + e.getMessage() );
}
}

2 个答案:

答案 0 :(得分:0)

问题在于我的客户端代码,很奇怪。

load:function(data){
    data = data.replace("/*", "");
    data = data.replace("*/", "");  

    var obj = eval('(' + data + ')');
    alert('Success');

}       

很奇怪,但这很有用。大声笑。

答案 1 :(得分:0)

我猜问题是使用handle作为方法的coment-filtering选项。 响应应该是评论文件,如下所示。 请参阅AjaxActionResponse.jsp(WCS)

vailable Handlers

有几个预定义的contentHandler可供使用。该值表示处理程序映射中的键。

text (default) - Simply returns the response text
json - Converts response text into a JSON object
xml - Returns a XML document
javascript - Evaluates the response text
json-comment-filtered - A (arguably unsafe) handler to preventing JavaScript hijacking
json-comment-optional - A handler which detects the presence of a filtered response and toggles between json or json-comment-filtered appropriately.

实施例