2017-02-02 3 views
-1

Ich habe jetzt 2 Stunden gesucht, aber habe keine Lösung dafür gefunden.Passing & (kaufmännisches Und) in AJAX/JSON

hier Mein Ziel ist es, eine E-Mail mit einem Link zur Auftragsverfolgung senden ..

Alles funktioniert, es ist nur, dass der Link geschnitten wird, wo der & char ..

ich mit differend versucht habe, Kodierungen und Dekodierungen, aber ich bin mit dieser nach einigen Stunden stecken ..

Deshalb

Hinweis .. von Ihnen Meister der Codierung für etwas Hilfe lieben würde ich: Es gibt einige Teile, meistens unten, in der eingefügten Kabeljau Das wird wahrscheinlich nicht benötigt, um die Frage zu beantworten, aber ich habe sie trotzdem eingefügt, nur für den Fall, dass sie benötigt werden.

Mein Code:

var snr = parentTR.find('.comment').val(); 

var tracklink = 'http://www.silversmurfen.se/?route=common/track&nr=' + snr; 
var kommentar = 'Din order är nu skickad. Du har sändningsnummer ' + snr + '. Du kan spåra ditt paket genom följande länk: ' + tracklink; 



var namn = parentTR.find('.nameclass').html(); 
var id = parentTD.attr("id"); 

if (true == true) { // ÄNDRA FÖRSTA TRUE TILL "knappval" OM DU VILL HA POPUP BEKRÄFTELSE PÅ KNAPPTRYCK. 

    $.ajax({ 
     url: '<?php echo $catalog; ?>index.php?route=api/order/history&token=' + token + '&store_id=0&order_id=' + id, 

     type: 'post', 
     dataType: 'json', 
     data: 'order_status_id=' + 10 + '&notify=' + 1 + '&override=' + 0 + '&append=' + 0 + '&comment=' + kommentar, 
     beforeSend: function() { 
      parentTD.find('.betald_knapp').button('loading'); 
     }, 
     complete: function() { 
      parentTD.find('.betald_knapp').button('reset'); 
     }, 
     success: function(json) { 
      $('.alert').remove(); 

      if (json['error']) { 
       $('#history').before('<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> ' + json['error'] + ' <button type="button" class="close" data-dismiss="alert">&times;</button></div>'); 
      } 

      if (json['success']) { 
       parentTR.find('.nameclass').html("<b>" + namn + "</b>"); 
       parentTR.find('.statusclass').html("<b>Skickad</b>"); 
      } 
     }, 
     error: function(xhr, ajaxOptions, thrownError) { 

      alert(thrownError + "\r\n" + xhr.statusText + "\r\n\n" + xhr.responseText); 
     } 
    }); 

Vielen Dank im Voraus euch!

+0

Was wird geschnitten und wo? Meinst du "Tracklink"? Wird es im Client-JS-Code, auf dem Server, auf dem Sie es empfangen, oder in der E-Mail, die gesendet wird, abgeschnitten? – JJJ

+0

tracklink das ist Teil von kommentar, Es wird in der E-Mail geschnitten, die gesendet wird, so dass & alles danach nicht mehr erscheint .. – TryingToLearn

Antwort

0

Die Funktion encodeURIComponent konvertiert Sonderzeichen in einer Zeichenfolge in das Formulardaten- und Abfragezeichenfolgenformat.

Das gesagt, da Sie jQuery verwenden, generieren Sie die Zeichenfolge nicht von Hand. Übergeben Sie ein Objekt an data, und lassen Sie es von jQuery für Sie kodieren.

data: { 
    order_status_id: 10, 
    notify: 1, 
    override: 0, 
    append: 0, 
    comment: kommentar 
}, 
+0

Danke .. ich habe den Datenteil in ein Array geändert, aber jetzt codiert es in: https : //www.silversmurfen.se/? route = common/track & amp% 3bnr = aaa wenn ich es brauche: https://www.silversmurfen.se/?route=common/track&nr=aaa – TryingToLearn

+0

@TryingToLearn - Ich sehe nicht, wie es das tun könnte. Es sollte die '&' Zeichen in 'kommentar' in'% 26' konvertieren und nichts in '&' konvertieren. Sie müssen einen anderen Code haben, der das tut. – Quentin

Verwandte Themen