yjxqlz
2009-09-01 14:45
浏览 226
已采纳

jquery+json+struts2在IE下就是通不过,怎么回事?

最近刚学json,用jquery的$.ajax+struts2.1.6用个简单的例子试了下,在ff下表现正常,但IE就是通过不了,上网查了一天,发现像我这样的情况不是很多,没办法,只有来这里看有没有人也出现这种情况

我的action
[code="java"]
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Controller;

import com.opensymphony.xwork2.ActionSupport;
@Controller("forum.util")
public class ForumUtilAction extends ActionSupport{
protected final Log logger = LogFactory.getLog(getClass());
String id;
String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public void setId(String id) {
this.id = id;
}
public String setNotice(){
message="abc";
return "success";
}

}
[/code]

配置文件:
[code="xml"]



false

true

true



[/code]

页面js
[code="js"]

function setNotice(){ $.ajax({ type: "post", url: "/dlspace/forum/json/setNotice.do", dataType: "json", cache: false, success: function(data){ alert("success"); }, error: function(data,x,y){ alert(data); //这里打印 [object] alert(x); //这里打印 parseerror alert(y); //这里打印 undefined alert("wrong"); } }); }

[/code]

在Firefox下能够正常打印“success”,但IE下就是不行,直接进error函数了,在控制台中也看到了action返回的json数据,显示为[JSON]{"message":"abc"},是我哪里弄错了吗?希望牛人解惑

[b]问题补充:[/b]
[quote]LZ使用的是直接的jsonplugin吗?LZ试一下这个com.googlecode.jsonplugin

我一般都使用这个plugin

http://code.google.com/p/jsonplugin/downloads/list
jansel (高级程序员) 2009-09-01[/quote]

我使用的就是你提供的网页中的jsonplugin-0.34.jar这个版本,你所说的“直接的jsonplugin”是什么意思?谢谢

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

3条回答 默认 最新

  • iteye_15225 2009-09-01 18:45
    最佳回答

    jsonplugin,我上次用了另外一个,老是搞不定,最后换了这个才通。

    看LZ的情况,这个显然可以使用了。

    看了一下ajax调用的地方也没写错啊

    看了一下1.3.2的文档:

    [quote]
    通过 HTTP 请求加载远程数据。

    jQuery 底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。$.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该对象,但特殊情况下可用于手动终止请求。

    $.ajax() 只有一个参数:参数 key/value 对象,包含各配置及回调函数信息。详细参数选项见下。

    注意: 如果你指定了 dataType 选项,请确保服务器返回正确的 MIME 信息,(如 xml 返回 "text/xml")。错误的 MIME 类型可能导致不可预知的错误。见 Specifying the Data Type for AJAX Requests 。

    注意:如果dataType设置为"script",那么在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。(因为将使用DOM的script标签来加载)

    jQuery 1.2 中,您可以跨域加载 JSON 数据,使用时需将数据类型设置为 JSONP。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。数据类型设置为 "jsonp" 时,jQuery 将自动调用回调函数。

    [/quote]

    LZ要看一下[color=red]注意[/color]的地方,MIME的信息是否正确,然后就是是不是跨域加载JSON数据了

    如果实现不行,LZ试一下1.3.2这个版本吧

    评论
    解决 无用
    打赏 举报
查看更多回答(2条)

相关推荐 更多相似问题