2017-05-31 3 views
1

Ich kann nicht für das Leben von mir herausfinden, was in diesem Code ist los von &. Wenn jemand eine URL wie http://example.com/?ref=me&id=1 eingibt, muss ich die gesamte URL im Echo anzeigen. Aber es schneidet alles nach dem & ab.Etwas in meinem Code ignoriert alles nach dem Ampersand

Hier ist der Code, der verwendet wird.

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> 

Script:

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 Datei 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); 
?> 

Mit diesem Code kann ich eingeben in: http://example.com/?ref=me&id=1 und hier ist das, was es echos zurück: http://example.com/?ref=me total ignoriert alles nach dem kaufmännischen Und-Zeichen.

+0

Ich schlage vor, Sie verwenden 'Daten: {m: $ (‚# MemberID‘) .val(), b: bannerFile, u: $ ("#" + id) .val()} 'auf Anfrage. – PiLHA

Antwort

4

Sie müssen entweder die Daten kodieren Sie verwenden encodeURI() auf jede Variable senden, oder einfach nur die Daten übergeben richtig:

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

Ich weiß nicht, warum das funktioniert, aber es tut lol. Vielen Dank @Enstage –

+2

Es funktioniert, weil die Art, wie Sie es manuell getan haben, weder Javascript noch PHP konnte sagen, ob die '&' war eine neue Variable oder ein Teil der Zeichenfolge, indem ich es so wie ich habe, Javascript codiert das kaufmännische Und so parsierte es als Teil der Zeichenfolge. Wenn meine Antwort richtig ist, wählen Sie das grüne Häkchen unter den Abstimmpfeilen, um es als solches zu markieren. – Enstage

+1

Ehrfürchtig. Ich habe das grüne Häkchen überprüft. Ich hätte vor dir geschrieben, aber es hat mich 6 Minuten warten lassen, lol. Wie auch immer, vielen Dank! –