首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Response.ContentType="text/javascript“不工作

Response.ContentType="text/javascript“不工作
EN

Stack Overflow用户
提问于 2014-04-03 08:36:40
回答 2查看 6.3K关注 0票数 2

我能得到为什么Response.ContentType="text/javascript";不能工作的可能原因吗?

更详细地说,我有:

代码语言:javascript
复制
Response.Clear();
Response.ContentType = "text/javascript";
%>notifySuccess();<%

我得到的只是一个带有文本notifySuccess();的页面。查看页面的源显示的文本完全相同。

查看响应头,我得到:

代码语言:javascript
复制
Cache-Control: private
Content-Type: text/javascript
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Thu, 03 Apr 2014 08:33:01 GMT
Content-Length: 149

200 OK

notifySuccess是调用页面中的一个函数,只需重新加载:

代码语言:javascript
复制
document.location.reload();

有人能告诉我为什么这不管用吗?

我在windows 7上使用IIS 7.5,但在windows 2008上遇到了同样的问题。

经过多次评论,没有成功,我创建了一个测试页面(它有同样的问题)。下面是整个测试脚本:

代码语言:javascript
复制
<%@Language="JScript"%>
<%
Response.Clear();
Response.ContentType = "text/javascript";
%>alert(123);

也曾尝试过:

代码语言:javascript
复制
<%@Language="JScript"%>
<%
Response.Clear();
Response.ContentType = "text/javascript";
%><script type="text/javascript">alert(123);</script>

还包括:

代码语言:javascript
复制
<%@Language="JScript"%>
<%
Response.Clear();
Response.ContentType = "application/javascript";
%>alert(123);

编辑

因此,在上面的测试脚本被称为custom2.asp之后,我现在有了一个名为custom.asp的脚本,它只包含一个带有action=custom2.asp的表单:

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
</head>
<body>
    <form action="custom2.asp">
        <input type="submit" />
    </form>
</body>
</html>

这基本上是现有代码所做的,但它在实际代码中的原型模型框中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-03 10:11:24

从评论中可以看出我理解你错过了什么

这有两部分

  1. 返回为JavaScript的ASP页面(对于参数sack js.asp) <% Response.Clear();Response.ContentType = "text/javascript";%>notifySuccess();
  2. 包含JavaScript的ASP页面(让我们称之为page1.asp)
票数 2
EN

Stack Overflow用户

发布于 2014-04-03 10:12:01

如果您使用通常用于显示JavaScript文档的机制向浏览器请求一个JavaScript程序(例如,按照链接、提交表单或在地址栏中键入JS的URL ),则浏览器将以文本形式显示该JavaScript程序的源代码。这是正常的行为。

要运行JavaScript程序,您需要:

  1. 创建HTML文档
  2. 在该文档中包含一个<script>元素
  3. 将该src<script>属性设置为JS程序的URL
  4. 使用浏览器访问HTML文档

但是,为了提交表单,然后根据得到的响应在当前页面的上下文中运行JavaScript ,您需要:

  1. 将事件处理程序(用JS)绑定到表单的提交事件
  2. 防止表单提交的默认行为
  3. 使用Ajax发出HTTP请求(而不是通常提交表单)
  4. 检查响应(您可能应该将其设置为某种形式的结构化数据,而不是应用程序代码)
  5. 如果响应指示条件合适,则运行JS

但是,您的Javascript似乎只是重新加载了现有的页面,因此可以完全忘记使用JS,而使用不同的方法。

  1. 如常提交表格
  2. 在服务器端处理数据
  3. 使用Location头发出HTTP302FindResponse,给出页面的URL,表单出现在
  4. 允许将浏览器重定向回它的来源,在过程中重新加载页面。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22832132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档