2012-04-19 81 views
1

我有一个使用jqGrid插件的数据网格,如果输入的电子邮件已存在于数据库中,我想要自定义错误消息。它将字段传递给cfc并返回此json(这是Firebug窗口中显示的内容,以便部分正常):{“USERDATA”:{“MSG”:“电子邮件已存在于注册中”,“TYPE”:“错误“}}jqGrid和Coldfusion解析json响应

所以基本上我试图解析出这个JSON,并做出警告或做模式窗口的东西。我在这里找到了下面的代码,它似乎通过了JSON。下面是调用GetResponseData功能的附加选项的一部分:两者具有相同

function GetResponseData (resp) { 

var jtxt=(resp.responseText); //{"USERDATA":{"MSG":"Email already exists in registration","TYPE":"Error"}} 

var jreturn=JSON.parse(jtxt)   

alert(jreturn); //shows '[Object.object]' 

var msg=jreturn.USERDATA[0].MSG; 
var type=jreturn.USERDATA[0].TYPE; 
alert(msg); 
alert(type); 
} 

我试过JSON.parse和eval():

{addCaption:"Add Recipient",closeOnEscape:true,savekey: [true,13],closeAfterEdit : false, errorTextFormat:commonError,width:"450" 
      ,afterSubmit:function(response,postdata){ return GetResponseData(response); },reloadAfterSubmit:true,bottominfo:"Fields marked with (*) are required",top:"60",left:"70"} 

与警报功能添加到测试错误: resp.USERDATA is undefined

谢谢大家!我相当新的CF和jQuery,任何帮助表示赞赏。

回答

2

如果您使用的是Firebug或Google Chrome,我建议使用控制台视图并替换console.log()调用的警报。这可以让你检查物体并查看它们的结构。

尝试

console.log(jreturn) 

我看到你正在使用jreturn.USERDATA [0] .MSG; 。你为什么要像访问数组一样访问USERDATA?对于我们所看到的作为responseText的输出,应该是

jreturn.USERDATA.MSG;