我有一个使用AJAX和Classic ASP的应用程序,在我的ajax请求中我试图从页面返回一个JSON值。
$("#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);
}
});
(我删除了数据参数,因为有负载)
我将其作为文本的dataType获取,但是当设置为JSON时,它返回相同的内容。问题是返回数据是:
<!-- include file="functions/tabs/tabs.asp" -->
<!-- include file="functions/password/config_password.asp" -->
[{"surveyId" : "64"}]
但是,当我将参数传递给URL时,它只显示最后一行。
当我添加此
时Response.AddHeader('Content-Type', 'application/json')
它返回我上面看到的所有行,我可以这样做,所以当我甚至没有把它们写到页面上时,这两行不会出现吗?
答案 0 :(得分:0)
这两个语句在某些时候都是有效的IIS服务器端包含指令(SSI),但可能是为了阻止它们被处理,#
被删除了。
这个问题是它们不再被预处理和处理,就像客户端调用其他页面的其他输出一样(@technophobia {{3}在评论中)。
所以为了阻止这些出现,你有几个选择;
#
并允许对SSI进行预处理。<!-- include -->
行,因为它们不包含未经预处理的#include
行。 (推荐) 有条件地加载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"
请记住,此方法将根据包含的组织方式给出不同的结果。如果包含函数列表,则此方法不适合
Function
或Sub
语句不能存在于If
语句中。但是你必须问自己,如果它只是
Function
和/或Sub
程序的列表,那么在第一个程序中对它进行预处理有什么害处放置?