【问题标题】: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);
                }
            });
        }
        

        【讨论】:

          猜你喜欢
          • 2015-07-21
          • 1970-01-01
          • 2017-09-25
          • 2012-09-18
          • 1970-01-01
          • 1970-01-01
          • 2011-12-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多