2015-05-13 3 views
0

У меня есть приложение, использующее AJAX и Classic ASP, в моем запросе ajax. Я пытаюсь вернуть значение JSON со страницы.AJAX возвращает включенные файлы из Classic ASP

$("#btnSaveAdvisor").click(function() { 
    $.ajax({ 
     method: "GET", 
     url: "verify_survey.asp", 
     contentType: "application/text", 
     dataType: "text", 
     data: { 
     }, success: function(data) { 
      console.log(data); 
     }, error : function(xhr) { 
      console.log(xhr); 
     } 
    }); 

(I Удалены параметры данных, потому что были грузы)

Я извлечение его как DATATYPE текста, но при установке в формате JSON он возвращается то же самое. Проблема заключается в том, что возвращение данных:

<!-- include file="functions/tabs/tabs.asp" --> 


<!-- include file="functions/password/config_password.asp" --> 


[{"surveyId" : "64"}] 

Однако, когда я передать параметры в URL, он показывает только последнюю строку.

Когда я добавляю этот

Response.AddHeader('Content-Type', 'application/json') 

Он возвращает все строки, которые я вижу выше, HWO я могу сделать это, так что эти две линии не появляются, когда я даже не пишу их на странице?

+1

Примечание: При передаче параметра в URL, страница будет интерпретироваться как HTML страницы с помощью браузера. Это означает, что любой контент между '' не будет отображаться на странице. Однако, если вы посмотрите на источник - вы увидите то же самое, что и вы выше. – technophobia

+0

Ваша проблема в коде ASP, который возвращает эти данные, а не ваш код jQuery. – technophobia

+0

Да, я думал так же, но я редактирую очень старый фрагмент кода, и у него много кода, поэтому не хочу просто удалять фрагменты кода, что я делал, однако добавлял некоторые уникальные персонажи вокруг JSON и в JavaScript получили все содержимое между уникальными символами, чтобы заставить его работать –

ответ

0

Эти два заявления в какой-то момент были на стороне сервера IIS действует Включить директивы (SSI), но, вероятно, как взломать, чтобы остановить их быть обработан # был удален.

Проблема с этим не они больше не предварительно обработаны и обрабатывают, как и любой другой выход которого выводится с остальной частью страницы, когда она вызывается клиентом @technophobiapointed out в комментарии).

Итак, чтобы прекратить это появление, у вас есть несколько вариантов;

  1. Добавить # и разрешить предварительную обработку SSI.
  2. Полностью удалить линии <!-- include -->, так как они не содержат #include, они не подвергаются предварительной обработке в любом случае. (рекомендуется)
  3. Условно загрузить SSI, что-то типа;

    <% 
    Dim process_includes 
    
    'Pass querystring value to determine if includes are processed. 
    process_includes = (Request.QueryString("i") = "1") 
    If process_includes Then 
    %><!-- #include file="functions/tabs/tabs.asp" --> 
    <!-- #include file="functions/password/config_password.asp" --><% 
    End If 
    %> 
    

    , то вы можете изменить AJAX

    дл обработки включает в себя;

    url: "verify_survey.asp?i=1" 
    

    или игнорировать их;

    url: "verify_survey.asp?i=0" 
    

    Имейте в виду, что этот метод будет давать разные результаты в зависимости от того, как включает организованы. Если в include содержится список функций, этот метод не подходит, поскольку операторы Function или Sub не могут существовать внутри оператора If.

    Но тогда вы должны спросить себя, если это просто список Function и/или Sub процедур Какой вред в оставление это быть предварительно обработаны в первую очередь?