在JavaScript中将带有查询参数的URL作为函数参数传递

时间:2017-01-10 07:26:20

标签: javascript

我有一个类似

的网址

https://go.feeds4.com/merchants/?pid=1676&mid=4261

如何将其作为函数参数传递。我试图传递该值,但无法在函数中获取任何内容。

查询参数中的&是否会导致问题?

HTML

<a href="javascript:;"
   onclick=rendernewmodal(<?php echo '"'.htmlspecialchars_decode($merchant->affiliate_link).'"'; ?>);>
  <i class="fa fa-angle-right" aria-hidden="true"></i>
</a>

在View Page Source上,我可以看到以下内容

<a href="javascript:;"
   onclick=rendernewmodal("https://go.feeds4.com/merchants/?pid=1676&mid=4261");>

JS

function rendernewmodal(url) {
  alert (url);
}

我没有看到任何显示网址价值的提醒。请帮忙。

1 个答案:

答案 0 :(得分:1)

你有两个问题:

  1. 将数据放入HTML文档时,您必须编码它的HTML而不是来自 HTML
  2. 属性值在包含某些字符(如引号)时需要引用
  3. 将字符串拼接在一起以制作JavaScript文字容易出错且非常混乱,因此您也应该避免手动执行此操作。

    所以:

    <?php
        # Get the URL
        $url = $merchant->affiliate_link;
    
        # Put quotes around it and escape special characters for JS
        $url_as_js_string_literal = json_encode($url);
    
        # Put it in the rest of the JS
        $js_function_call = "rendernewmodal($url_as_js_string_literal);";
    
        # Escape special characters for HTML
        $html_safe_js = htmlspecialchars($js_function_call);
    ?>
    onclick="<?php echo $html_safe_js; ?>)">