在jQuery getJSON Ajax方法中破坏了相对Url

时间:2011-08-31 12:25:42

标签: url jquery getjson

我的开发环境的网址是:

http://localhost/mysite/blah...

我正在使用jQuery& getJSON在我的网站上执行一些ajax操作,我一直工作正常,我指定网址为:

/mysite/controller/action

..但这并不理想,因为我不想将我的开发网址硬编码到我单独的jQuery包含文件中。

当网站上线时,将控制器/操作或/控制器/操作作为URL解决就可以了,但是对于开发站点来说,它没有用。

我试过了:

controller/action

..但是这会返回404,这让我感到很惊讶,因为我认为url前面缺少/会阻止查看网站根目录。

必须有一个简洁的解决方案吗?

3 个答案:

答案 0 :(得分:4)

我会通过在HTML标题中插入一个全局常量来完成此操作:

<script type="text/javascript">
  var BASE_URL = '/mysite/';
</script>

这将从您的服务器插入,以便可以动态更改。 稍后在您的脚本中,您将能够使用(jQuery样式)来生成AJAX请求:

$.ajax( BASE_URL + '/controller/action', ...);

答案 1 :(得分:1)

如果你在

/mysite/controller/action

然后是

的正确相对路径
/mysite/some_other_controller/some_other_action 

../../some_other_controller/some_other/action

答案 2 :(得分:0)

您可以使用此代码获取.js脚本的当前路径,并使用它来计算相对路径。

# get structure
dat$icd9_1 %>% str()
# get rid of NAs (replace with 0s)
dat$icd9_1[is.na(dat$icd9_1 )] <- 0
# turn into factor
dat$icd9_1 <- factor(dat$icd9_1)
# get levels 
dat$icd9_1 %>% levels()
# use fct_collapse
dat %>%
    mutate(icd9_bin_1 = fct_collapse(
        icd9_1,
        `icd9` = c("411.89","414.01"),
        `no icd9 dx` = c("0")))
# A tibble: 6 x 4
#   pat_id icd9_1        icd9_2 icd9_bin_1
#    <dbl> <fctr>         <chr>     <fctr>
#        1 414.01        414.01       icd9
#        2 411.89          <NA>       icd9
#        3      0        410.71 no icd9 dx
#        4      0          <NA> no icd9 dx
#        5      0        410.51 no icd9 dx
#        6      0 272.0, 410.71 no icd9 dx

将YOUR_SCRIPT_NAME替换为您脚本的唯一名称。