Как отправить параметры с тегом javascript? - PullRequest
1 голос
/ 22 апреля 2009

Как отправить параметры (с QueryString) в теге javascript в качестве атрибута источника на страницу ASP.NET?

Пример: <script language="javascript" src="myDomain/myPage.aspx?id=123&no=43"></script>

А что мне делать в "myPage.aspx"?

Например, я хочу отправить изображение в тег скрипта в соответствии с его строкой запроса src.

Ответы [ 4 ]

3 голосов
/ 22 апреля 2009

Тег script используется для включения кода JavaScript на странице. Если вы хотите отобразить изображение на странице, даже если оно генерируется динамически, вам нужно использовать тег img, а не тег сценария.

<img src="myDomain/myPage.aspx?id=123&no=43" alt="some text" />

Как правило, вы бы использовали для этого HttpHandler (ashx вместо aspx), и ему просто нужно создать изображение (или прочитать его из файла) и затем отправить данные в ответ с правильным MIME- тип, длина и т. д.

См. справку о том, как извлекать изображения из БД с использованием HttpHandler.

2 голосов
/ 22 апреля 2009

Непонятно, что вы собираетесь делать в myPage.aspx. Поскольку это тег сценария, он должен генерировать код JavaScript. Но я не вижу причин, по которым вам нужно было бы динамически генерировать код JavaScript. Переменные Javascript в основном имеют глобальную область видимости, поэтому определите изображение в переменной перед включением тега script.

Итак, на вашей html-странице вы бы сделали что-то подобное в заголовке:

<script type="text/javascript">
var imageURL = 'http://www.google.com/intl/en_ALL/images/logo.gif';
</script>
<script src="myScript.js" type="text/javascript"></script>

А затем в myScript.js:

alert("The image URL is: " + imageURL);
//do whatever processing with the image that you need to do...

Google Analytics раньше работал так (до того, как перейти к более объектно-ориентированному подходу).

1 голос
/ 22 апреля 2009

Зачем вы отправляете картинку в тег скрипта? В основном то, что у вас есть, будет работать на стороне клиента. В MYPage.aspx вам нужно вывести то, что вы хотите отправить.

Я бы рекомендовал использовать HttpHandler, который отлично подходит для динамического предоставления таких вещей, как CSS, Javascript или изображения

0 голосов
/ 21 февраля 2010

Все, что вам нужно сделать, это дать вашему тегу <SCRIPT> атрибут SRC, указывающий на страницу ASPX, как вы и хотели. Единственная хитрость в том, что у вас должна быть страница ASPX, которая возвращает javascript, установив для contentType значение text/javascript. (Убедитесь, что он отправляет обратно только действительный JavaScript.)

Вот два файла, чтобы доказать, что это работает:

JavascriptLibraryTester.aspx

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<script src="JavascriptLibraryTest.js.aspx?Color=red" type="text/javascript" charset="utf-8">
</script>
</head>
<body>
    <a href="javascript:showServerGeneratedJavascript()">show Server Generated Javascript</a>
</body>

JavascriptLibraryTest.js.aspx

<%@ Page Language="C#" %>
<%
    Response.ContentType = "text/javascript";
    string color = Request["Color"];
    string now = DateTime.Now.ToString();
%>
function showServerGeneratedJavascript(){
    alert('<%=now %>\n<%=color %>');
}
...