我的代码中的某些内容忽略了&符之后的一切

时间:2017-05-31 23:02:40

标签: javascript php

我不能为我的生活弄清楚这段代码中的什么是摆脱&amp ;.如果有人输入了http://example.com/?ref=me&id=1这样的网址,我需要在回显中显示整个网址。但它正在切断&。之后的所有内容。

以下是正在使用的代码。

HTML:

<div class="toolbar">
Enter the site URL that people will go to when they click your banner and click update to store it:<br> 
<input id="ban<?php echo $key;?>" type="text" value="" size="100">&nbsp;&nbsp;<input type="button" class="buttonHAdd" value="Update" onclick="updateBannerURL(&#39;<?php echo $directoryfile ;?>&#39;, &#39;ban<?php echo $key;?>&#39;)"><br>
Use the following HTML to display the banner on your site:<br><span id="htmlban<?php echo $key;?>" style="background-color: #ffffff"></span>
</div>

脚本:

function updateBannerURL(bannerFile, id) {

if($("#"+id).val() == "") {
  alert("You have not entered a site url");
  return;
 }
$.ajax({
    type: "POST",
    url: "update.banner.php",
    data:'m='+$('#memberId').val()+'&b='+bannerFile+'&u='+$("#"+id).val(),
    dataType: 'json',
    success: function(data, textStatus) {
        $('#html'+id).text(data.bannerHtml);
    },
    error: function(XMLHttpRequest, textStatus, errorThrown) {
       $('.workareaTip').html('Hmm... Looks like an error occurred.');
   }
   });
}

PHP文件update.banner.php

<?php 
$domain = 'https://example.com/banner';
$u = $_POST['u'];
$b = $_POST['b'];
$m = $_POST['m'];
$array = array('bannerHtml'=>
    '<a href="'.$u.'"><img src="'.$domain.'/banners/'.$m.'/'.$b.'" border=""/><a/>'
    );
echo json_encode($array);
?>

使用该代码,我可以输入:http://example.com/?ref=me&id=1,这就是回复的内容:http://example.com/?ref=me完全忽略了&符之后的所有内容。

1 个答案:

答案 0 :(得分:4)

您需要在每个变量上使用encodeURI()对要发送的数据进行编码,或者只是正确传递数据:

data: {
    m: $('#memberId').val(),
    b: bannerFile,
    u: $("#"+id).val()
},