Javascript_Ajax:如何在前台利用JS处理$.ajax() request 中得到的不同结果?

 

问题描述:$.ajax()去操作后台(Strtus2) action 有可能返回不同形式的结果。当是一段JSON格式的数据时,可以用JS对映的函数处理它们。但也有可能是一段HTML代码片段比如是一段exception page代码,这也需要显示出来。考虑到在实际应用中,还有可能是$ajax()出现错误的情况。此时我们就要在前台针对这三种分别处理。

问题解决:

1)绑定ajaxError事件, 当出现任何ajaxError事件时,将在特定桢上显示出公共的出错信息。

2)绑定axComplete事件,当在ajax :succss中得到数据时,判断它是什么类型的数据,如果是JSON格式则转到相应的JS 函数去处理;如果是exception HTML片段,则保存到此数据,并转到ajaxComplete事件中,去在特定桢上显示出它们作为出错信息。

 

 

$.ajax({ type: "POST", url: "/getData.action", data: dataString, //dataType: "json", //not force it to json type success: function(data) { retData=data; //get the return data of ajax request var json; try { json=eval('('+data+')'); }catch(er) { bSuccess=false; return; } data1=json.top_menu; data2=json.left_menu; data3=json.default_leftmenu; if (data1!=undefined && data2!=undefined && data3!=undefined) bSuccess=true; else { bSuccess=false; return; } doCreateNavigationBar(); $("ul.sf-menu").superfish().find('ul').bgIframe({opacity:false}); //create the default left menu var items=eval(data3); // var items=temp.split('>'); $(items).each(function(i, n){ var temp=n; var default_treeid=temp.replace(/>/g,','); doCreateSDMenu(default_treeid); }) } }); $('#centre-block').ajaxComplete(function(e,xhr,settings) { if (retData!=undefined && !bSuccess ) { $('#centre-block').html(retData); } } ); $('#centerFrame').ajaxError(function(e,xhr,o){ $(this).attr('src','/system/allexception.jsp'); });

你可能感兴趣的:(Javascript_Ajax:如何在前台利用JS处理$.ajax() request 中得到的不同结果?)