2016-09-28 93 views
0

控制器返回:AJAX功能没有返回预期的输出

return Json(new { html = "<html><body>HELLO</body></html>" },JsonRequestBehavior.AllowGet); 

这简直是一个字符串 'HELLO'

的json功能如下:

function callPrint() { 
     var PrintCssContent = ""; 

     $.ajax({ 
      url: '@Url.Action("GetHtmlString", "Itinerary", new { area = "Travel" })', 
      dataType: "text", 
      success: function (data) { 
       alert(data); 

       WinPrint.document.write(data); 
       WinPrint.document.write(DivMainContent.innerHTML.toString()); 
       WinPrint.document.write("</body></html>"); 
       WinPrint.document.close(); 
       WinPrint.focus(); 
       WinPrint.print(); 
       WinPrint.close(); 
      }, 
      error:function(){ 
       alert('error'); 
      } 
     }); 
     return false; 
    } 

但JSON警报正在返回如下内容: {“html”:“\ u003chtml \ u003e \ u003cbody \ u003eHELLO \ u003c/body \ u003e \ u003c/html \ u003e”}

如何简单地使用我的json函数返回'HELLO'?

+0

对不起它的AJAX功能 – rohit

+0

仅返回“HELLO”,你应该返回一个JSON用'html'等于“HELLO”。你有它包裹在HTML标签。进一步使用'data.html' –

+0

我会从我的mvc控制器ActionResult返回整个html页面。所以首先我试图返回 返回Json(新的html =“ HELLO”},JsonRequestBehavior.AllowGet); 仅用于测试目的。 – rohit

回答

1

您需要使用JSON.Parse才能返回JSON数据。更改您的alert声明为,

var parseData = JSON.parse(data); 
alert(parseData.html); 

希望这有助于!

+0

它返回:[object object] – rohit

+0

他不需要在这里解析。他有一个带有HTML标记字段的JSON,所以他只需要'data.html'来追加 –

+1

@whitelettersinblankpapers但是他的JSON(正如他在这里提到的)里面有Unicode字符。 '{“html”:“\ u003chtml \ u003e \ u003cbody \ u003eHELLO \ u003c/body \ u003e \ u003c/html \ u003e”}'我们需要在显示它之前解析它。 –

1

您需要将结果转换为JSON,然后打印出来,这里是代码:

function callPrint() { 
    var PrintCssContent = ""; 

    $.ajax({ 
     url: '@Url.Action("GetHtmlString", "Itinerary", new { area = "Travel" })', 
     dataType: "text", 
     success: function (data) { 
      var dataParsed = JSON.parse(data); 
      WinPrint.document.write("<html><body>"); 
      WinPrint.document.write(dataParsed.html); 
      // WinPrint.document.write(DivMainContent.innerHTML.toString()); 
      WinPrint.document.write("</body></html>"); 
      WinPrint.document.close(); 
      WinPrint.focus(); 
      WinPrint.print(); 
      WinPrint.close(); 
     }, 
     error:function(){ 
      alert('error'); 
     } 
    }); 
    return false; 
} 
+0

它返回'undefined' – rohit

+0

奇怪,尝试数据['html']或 data [0] .html //不可能 最后的想法是 var parsedData = JSON.parse(data); alert(parsedData.html) –

+0

如果我删除alert(parseData.html);而不是在alert box中显示数据,我想用window.print打印它,那我该如何实现这一点? – rohit