1

我做了一个 url 收缩器,我目前有一个 Soundcloud Javascript API,可以输出歌曲的 url 链接。我试图用我的收缩器收缩它。收缩器使用以下方法工作:

<?php echo $bitly->shorten('http://google.com'); ?> //Equals google.com in short url format

我试图在其中实现它的 javascript 代码是这样的:我会继续为您提供我已经尝试过的操作,但没有成功。

在我编辑之前:

 container.find('span.player-actions').html(
                '<a href="' + track.user.permalink_url + '" target="_blank">Soundcloud</a> | <a href="' + track.permalink_url + '/download" target="_blank">Download</a>'
        );

在我尝试之后:

container.find('span.player-actions').html(
                '<a href="' +  <?php echo $bitly->shorten('track.user.permalink_url'); ?> + '" target="_blank">Soundcloud</a> | <a href="' + track.permalink_url + '/download" target="_blank">Download</a>'
        );

任何建议,我都愿意接受。并且很想完成这项工作!

4

2 回答 2

3

这已经解释过了,但如果你是这个概念的新手,有一个简化的解释。

<?php在您的页面发送到用户的浏览器之前,您的代码中的标签会在服务器上进行处理。实际上浏览器永远不会收到这些标签 - 它们被服务器上的 PHP 输出替换,然后将生成的页面发送给用户。

由于某些错误,有时 PHP 代码会进入用户的浏览器,但它的行为与任何其他非标准标签一样 - 内容之间的内容<?php?>访问者是不可见的。

另一方面,JavaScript 在用户浏览器中运行(在我们的例子中)PHP 已经输出的内容。当您使用 JavaScript 更改页面时,它不会被发送回服务器 - 实际上,服务器完全不知道这一点,因此它无法执行您的 JavaScript 输出的 PHP 代码。

为了获得类似的结果,您需要从 JavaScript 代码发送 AJAX 请求。它基本上是由您的 JavaScript 发起的另一个“页面请求”,但发生在后台,PHP 输出不会替换您当前的页面,而是到达您的 JavaScript 代码。这样,您的 JavaScript 输出的是 PHP输出而不是 PHP代码,这就是它可能的原因。

于 2012-11-22T23:57:19.000 回答
1

您不能在通过 javascript 生成的字符串上调用 PHP,因为 PHP 是服务器端并在客户端 JavaScript 之前执行。

如果要缩短此字符串,则必须对将返回缩小 url 的 php 页面进行 ajax 调用。

于 2012-11-22T23:46:30.227 回答