2016-09-28 91 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