2016-09-28 3 views
0

контроллер возвращается:функция Аякса не возвращает ожидаемый результат

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

который просто строка

моя функция JSON 'Hello' выглядит следующим образом:

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"}

Как просто вернуть «HELLO» с помощью моей функции json?

+0

жаль, что функция AJAX – rohit

+0

возвращать только «HELLO», вы должны вернуть JSON с 'html' равным «HELLO». Вы его обернули в HTML-теги. Используйте 'data.html' далее –

+0

Я верну всю страницу html с моего контроллера mvc ActionResult. поэтому сначала я пытаюсь вернуть return Json (new {html = " HELLO"}, JsonRequestBehavior.AllowGet); только для целей тестирования. – rohit

ответ

1

Чтобы вернуть данные JSON, вам необходимо использовать JSON.Parse. Измените свой отчет alert как,

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

Надеюсь, что это поможет !.

+0

он возвращается: [object Object] – rohit

+0

ему не нужен синтаксический анализ здесь. У него есть JSON с полем, связанным с разметкой HTML, поэтому ему просто нужно добавить «data.html» –

+1

@whitelettersinblankpapers Но его JSON (как он упоминал здесь) имеет в нем символы Юникода. '{" 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'] или данные [0] .html // Вряд ли Последняя идея - var parsedData = JSON.parse (data); alert (parsedData.html) –

+0

если я удалю предупреждение (parseData.html); вместо того, чтобы отображать данные в окне предупреждения, я хочу распечатать его с помощью window.print, то как я могу это достичь? – rohit