【问题标题】:How do I dynamically change AJAX url?如何动态更改 AJAX url?
【发布时间】:2015-12-02 07:32:21
【问题描述】:
function updateChatroom() {
$.ajax({
url:'../inc/chatroom_update.php',
type:'POST',
success:function(response)
{
$("#chatUpdate").html(response);
}
});
}
我上面有这个 ajax,它放在 header.php 下的包含文件中。现在我的 header.php 包含在我的所有网站页面中,这意味着我的 ajax 中的 url 需要更改,因为我的网页可以位于不同的文件夹中。如何使 AJAX url 动态化?
在 PHP 术语中,如果我想在我的 header.php 文件链接上创建动态链接。我会设置一个 BASE_URL 然后放入文件所在的位置。我如何从 PHP 到 AJAX 做到这一点?提前致谢!
【问题讨论】:
标签:
javascript
jquery
ajax
url
【解决方案1】:
你为什么不这样做?
function updateChatroom(url) {
$.ajax({
url:url,
type:'POST',
success:function(response)
{
$("#chatUpdate").html(response);
}
});
}
现在您可以使用任何url 调用它。
【解决方案2】:
使用动态页面名称:
函数 updateChatroom(){
var url="<?php echo basename($_SERVER['PHP_SELF']); ?>";
$.ajax({
url:'../inc/'+url,
type:'POST',
success:function(response)
{
$("#chatUpdate").html(response);
}
});
}
【解决方案3】:
为什么不直接将 url 和 post 数据作为参数注入。
<script>
function updateChatRoom(url, data) {
data = data || {};
//I'd suggest validating this against some list.
if(!!url) {
$.ajax({
url: url,
data: data,
type:'POST',
success:function(response)
{
$("#chatUpdate").html(response);
}
});
} else {
//Throw
}
}
</script>
【解决方案4】:
如果这个函数被放置在 php 文件中,你可以使用类似于下面的代码来根据请求这个页面的位置来构建 URL:
<%
$url = $_SERVER['REQUEST_URI']; //returns the current URL
$parts = explode('/',$url);
$dir = $_SERVER['SERVER_NAME'];
for ($i = 0; $i < count($parts) - 1; $i++) {
$dir .= $parts[$i] . "/";
}
%>
function updateChatroom() {
$.ajax({
url: $dir . '../inc/chatroom_update.php',
type:'POST',
success:function(response)
{
$("#chatUpdate").html(response);
}
});
}