【问题标题】:Can I respond with javascript instead of HTML by link?我可以通过链接使用 javascript 而不是 HTML 来响应吗?
【发布时间】:2015-01-16 20:10:33
【问题描述】:

我有很多 HTML 页面包含指向相同 URL 地址的链接,如下所示:

<a href="http://example.com/page.php?params=1">Link</a>

问题是:我可以返回一个 javascript 响应,而不是可以通过单击链接执行的纯 HTML 吗?

例如,我在page.php中尝试过这个:

header("Location: javascript:alert(1)", true, 302);

但它不起作用。如果我发送包含所需 javascript 的 HTML 页面,则浏览器会打开一个新页面或将当前页面替换为包含 JS 的空白页面。

有没有其他方法可以在不改变链接href的情况下做到这一点?由于安全限制,它似乎不能。

【问题讨论】:

  • 嗯,响应页面可以包含在页面加载时运行的 javascript,但这仍然意味着需要打开一个新页面。如果您希望当前页面执行 JS,那么您需要有一个函数来获取链接页面响应并运行它(可能使用 eval() 但我从来没有要求这样做,所以不确定它有多明智是)
  • 请问ajax怎么用?
  • 或者您是在问如何在页面加载时调用 javascript,还是在问如何使用 javascript 来加载新页面?
  • @WindBridges 请接受我的回答

标签: javascript php html href


【解决方案1】:

不,您不能从服务器端调用 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 已在客户端上定义,并在收到有效负载时调用。

【讨论】:

    猜你喜欢
    • 2019-12-02
    • 2019-10-29
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    • 2016-02-26
    • 2012-02-07
    相关资源
    最近更新 更多