JQUERY json 传值问题

v_yao 2012-11-27 10:54:46

string msg="{ msginfo:[";

msg += "{";
msg += "msgs:'" + "完成"+"',";
msg += "flag:'" + "true" + "',";
msg += "thumb:'" + tpath+"',";
msg += "path:'" + imgpath + "'";
msg += "}";

以下是JSON组织代码,其中thumb和path的值为 一个图片的绝对路径如:C:\xxx\xxx\xxx\dd.img
下面是我的前端解析代码:

$.ajax({
type: "POST",
dateType: "json",
url: "xxxx.aspx",
data: "path=" + path,
success: function (data) {
var jsonData;
jsonData = eval(data);
$.each(jsonData.msginfo, function (idx, item) {
}
}

在解析时 jsonData = eval(data); 这里报错,报错IE 提示是 “SCRIPT1023: 缺少十六进制数字”
请教各位大侠解答。
...全文
597 31 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
pctonc 2012-12-02
  • 打赏
  • 举报
回复
请问。楼上的我也遇到了。你是怎么转移的
v_yao 2012-11-28
  • 打赏
  • 举报
回复
引用 28 楼 yenange 的回复:
下面的代码是亲自测试过的,IE8、Firefox16 完全可用。 你新建一个页面,名称: Default8.aspx 页面: JavaScript code?1234567891011121314151617181920212223242526272829303132333435363738<%@ Page Language="C#" AutoEventWire……
我找到了错误原因,格式和解析都没有问题。 问题出在我的 路径是一个绝对路劲,在传值的时候没有进行转义,如:"C:\Users\xxx\Desktop\xxx\File\xxx.jpg"
宝_爸 2012-11-27
  • 打赏
  • 举报
回复
[]是数组,应该是前面多个一个[
EnForGrass 2012-11-27
  • 打赏
  • 举报
回复
string msg="{ msginfo:["; msg += "{"; msg += "msgs:'" + "完成"+"',"; msg += "flag:'" + "true" + "',"; msg += "thumb:'" + tpath+"',"; msg += "path:'" + imgpath + "'"; msg += "}" 是不是少了一个]
yyl8781697 2012-11-27
  • 打赏
  • 举报
回复
eval('('+data+')') 试试
yaotomo 2012-11-27
  • 打赏
  • 举报
回复
alert 一下data,看看哪里格式不对 还有,后台可以使用JavaScriptSerializer类进行序列化。前台可以使用jQuery的ParseJSON方法反序列化。
zjwzcnjsy 2012-11-27
  • 打赏
  • 举报
回复
可以通过Fiddler来查看服务器端返回的是不是json格式,格式对不对。
吉普赛的歌 2012-11-27
  • 打赏
  • 举报
回复
下面的代码是亲自测试过的,IE8、Firefox16 完全可用。 你新建一个页面,名称: Default8.aspx 页面:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default8.aspx.cs" Inherits="Default8" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
    var path="path"
    $.ajax({
        type: "POST",
        dateType: "json",
        url: "Default8.aspx",
        data: "path=" + path,
        success: function (jsonData) {
            jsonData = $.parseJSON(jsonData);
            $.each(jsonData.msginfo, function (idx, item) {
                alert(this.msgs);
            });
        }
    });
    
    $.getJSON("Default8.aspx","path=" + path,function (jsonData) {
        $.each(jsonData.msginfo, function (idx, item) {
            alert(this.msgs);
        });
    });
});
</script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    </div>
    </form>
</body>
</html>
页面后置文件:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class Default8 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request["path"] == "path")
        {
            string tpath = "http://avatar.profile.csdn.net/B/0/6/1_yw39019724.jpg";
            string imgpath = "http://avatar.profile.csdn.net/B/0/6/1_yw39019724.jpg";
            string msg = "{ \"msginfo\":[";
            msg += "{";
            msg += "\"msgs\":\"" + "完成" + "\",";
            msg += "\"flag\":\"" + "true" + "\",";
            msg += "\"thumb\":\"" + tpath + "\",";
            msg += "\"path\":\"" + imgpath + "\"";
            msg += "}";
            msg += "]}";

            Response.Write(msg);
            Response.End();
        }
    }
}
按你的思路,修正了一些你的小错误。 不过, 我前面说的, 你还是得牢记, json格式是严格的, 手工效率低, 而且很易出错。 最好是用工具转。 .net 自带的JavaScriptSerializer或者Newtonsoft.dll 来转吧。 此外,最好是建立 ashx 文件来返回数据。 这样效率比较高。
yoyo_ 2012-11-27
  • 打赏
  • 举报
回复
引用 22 楼 yw39019724 的回复:
引用 20 楼 yenange 的回复: 引用 19 楼 yw39019724 的回复:引用 18 楼 yenange 的回复:引用 17 楼 yw39019724 的回复:引用 16 楼 yenange 的回复:引用 楼主 yw39019724 的回复:C# code?123456789string msg="{ msginfo:["; msg += "{"; ……
你在code里面的格式还是有问题的,冒号前面的字段是要加双引号的,你改成 string msg = "{\"msginfo\":["; msg += "{ \"msgs\":\"完成\",\"flag\":\"true\",\"thumb\":\"" + tpath + "\",\"path\":\"" + imgpath + "\"}"; msg += "]}"; 试试看
lengshuitandawei 2012-11-27
  • 打赏
  • 举报
回复
type : "post", contentType : "application/json;charset=UTF-8", dataType : "json",
v_yao 2012-11-27
  • 打赏
  • 举报
回复
有人知道么.
v_yao 2012-11-27
  • 打赏
  • 举报
回复
引用 23 楼 findcaiyzh 的回复:
引用 16 楼 yenange 的回复:$.ajax中 dateType: "json",jquery 会帮你把返回的字符串转json的, 你还搞个eval, 多余了。 IE不会帮忙的
该怎么处理啊
宝_爸 2012-11-27
  • 打赏
  • 举报
回复
引用 16 楼 yenange 的回复:
$.ajax中 dateType: "json",jquery 会帮你把返回的字符串转json的, 你还搞个eval, 多余了。
IE不会帮忙的
v_yao 2012-11-27
  • 打赏
  • 举报
回复
引用 20 楼 yenange 的回复:
引用 19 楼 yw39019724 的回复:引用 18 楼 yenange 的回复:引用 17 楼 yw39019724 的回复:引用 16 楼 yenange 的回复:引用 楼主 yw39019724 的回复:C# code?123456789string msg="{ msginfo:["; msg += "{"; msg +……
你说我格式不对,我又检查了一遍,个人觉得没什么问题啊

string msg="{ msginfo:[";
msg += "{ msgs:'完成',flag:'true',thumb:'" + tpath + "',path:'"+imgpath+"'}";
msg += "]}";
吉普赛的歌 2012-11-27
  • 打赏
  • 举报
回复
不要用eval了
吉普赛的歌 2012-11-27
  • 打赏
  • 举报
回复
引用 19 楼 yw39019724 的回复:
引用 18 楼 yenange 的回复:引用 17 楼 yw39019724 的回复:引用 16 楼 yenange 的回复:引用 楼主 yw39019724 的回复:C# code?123456789string msg="{ msginfo:["; msg += "{"; msg += "msgs:'" + "完成"+"',";……
你还没有搞明白呀? 问题不是出在前台页面的js上, 是你自己后台拼接json字符串, 这个格式不对。
v_yao 2012-11-27
  • 打赏
  • 举报
回复
引用 18 楼 yenange 的回复:
引用 17 楼 yw39019724 的回复:引用 16 楼 yenange 的回复:引用 楼主 yw39019724 的回复:C# code?123456789string msg="{ msginfo:["; msg += "{"; msg += "msgs:'" + "完成"+"',"; msg += "fl……
我使用了eval进行解析有什么不对么。
吉普赛的歌 2012-11-27
  • 打赏
  • 举报
回复
引用 17 楼 yw39019724 的回复:
引用 16 楼 yenange 的回复:引用 楼主 yw39019724 的回复:C# code?123456789string msg="{ msginfo:["; msg += "{"; msg += "msgs:'" + "完成"+"',"; msg += "flag:'" + "true" + "',"; ……
这种情况,最大的可能性就是数据转换成json格式时出了错吧。json的格式,要求是非常严格的,在通常情况下,不应该自己手写转换。 你可以考虑 newtonsoft, 或者.net自带的对象转json字符串。
v_yao 2012-11-27
  • 打赏
  • 举报
回复
引用 16 楼 yenange 的回复:
引用 楼主 yw39019724 的回复:C# code?123456789string msg="{ msginfo:["; msg += "{"; msg += "msgs:'" + "完成"+"',"; msg += "flag:'" + "true" + "',"; msg += "thu……
我之前没有加eval ,我在使用我返回的数据进行each的时候 提示 [无法获取属性“length”的值]
吉普赛的歌 2012-11-27
  • 打赏
  • 举报
回复
引用 楼主 yw39019724 的回复:
C# code?123456789string msg="{ msginfo:["; msg += "{"; msg += "msgs:'" + "完成"+"',"; msg += "flag:'" + "true" + "',"; msg += "thumb:'" + tpath+"',"; ……
楼主:你这个不需要再转换了。 $.ajax中 dateType: "json",jquery 会帮你把返回的字符串转json的, 你还搞个eval, 多余了。
加载更多回复(10)

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧