2017-01-10 49 views
1

功能參數我有一個看起來像與查詢參數傳遞URL中的JavaScript

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

如何傳遞這個作爲函數參數的URL。我正在嘗試傳遞該值,但無法獲取該函數中的任何內容。

查詢參數中的&是否會導致問題?

HTML

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

在查看頁面源代碼,我可以看到下面的

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

JS

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

我沒有看到URL的任何警報顯示值。請幫忙。

+0

的onclick功能未在'」「'。 – Shubham

回答

1

你有兩個問題:

  1. 投入HTML文檔數據時,你必須編碼它的HTML不是從 HTML對其進行解碼
  2. 屬性值需要引用時,他們含有某些字符(如引號)

將字符串串起來使JavaScript文字變得容易出錯和混亂,因此您應該避免使用t OO。

所以:

<?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; ?>)"> 
+0

我在做PHP中的htmlspecialchars_encode,因爲url顯示的是&而不是& –

+0

@GauravMehta - 它應該在源代碼*中顯示'& *'。瀏覽器在解析HTML時會解碼它。 – Quentin

+0

你先生是個天才。謝謝您的幫助。 –