我可以用 javascript 而不是 link 的 HTML 来回复吗?
Can I respond with javascript instead of HTML by link?
我有很多 HTML 页面包含 link 到相同的 URL 地址,如下所示:
<a href="http://example.com/page.php?params=1">Link</a>
问题是:我可以 return 一个 javascript 响应而不是可以通过单击 link 执行的普通 HTML 吗?
例如,我在 page.php
中试过这个:
header("Location: javascript:alert(1)", true, 302);
但它不起作用。如果我发送包含所需 javascript 的 HTML 页面,则浏览器会打开一个新页面或用包含 JS 的空白页面替换当前页面。
在不改变link的href的情况下,有没有其他方法可以做到这一点?由于安全限制,似乎不能。
不,您不能从服务器端调用 JavaScript。但是,您可以加载 JavaScript 以调用服务器并检索数据。
考虑到这一点,您可以调用从负载所在的服务器检索 JSON 或 XML,可以通过已经存在的 JavaScript 函数提取负载在客户端定义。
// note: in this example I use jQuery because their AJAX API is terrific
$.ajax({
url: "http://example.com/page.php?params=1"
})
.done(function( data ) {
// data is our payload
doSomethingWithPayload(data);
});
这种方式 doSomethingWithPayload
已经在客户端定义,并且在收到有效负载时调用。
我有很多 HTML 页面包含 link 到相同的 URL 地址,如下所示:
<a href="http://example.com/page.php?params=1">Link</a>
问题是:我可以 return 一个 javascript 响应而不是可以通过单击 link 执行的普通 HTML 吗?
例如,我在 page.php
中试过这个:
header("Location: javascript:alert(1)", true, 302);
但它不起作用。如果我发送包含所需 javascript 的 HTML 页面,则浏览器会打开一个新页面或用包含 JS 的空白页面替换当前页面。
在不改变link的href的情况下,有没有其他方法可以做到这一点?由于安全限制,似乎不能。
不,您不能从服务器端调用 JavaScript。但是,您可以加载 JavaScript 以调用服务器并检索数据。
考虑到这一点,您可以调用从负载所在的服务器检索 JSON 或 XML,可以通过已经存在的 JavaScript 函数提取负载在客户端定义。
// note: in this example I use jQuery because their AJAX API is terrific
$.ajax({
url: "http://example.com/page.php?params=1"
})
.done(function( data ) {
// data is our payload
doSomethingWithPayload(data);
});
这种方式 doSomethingWithPayload
已经在客户端定义,并且在收到有效负载时调用。