2017-02-02 2 views
-1

Я искал 2 часа, но не нашел для этого решения.Передача & (амперсанд) в AJAX/JSON

Моя цель здесь, чтобы отправить электронное письмо со ссылкой для отслеживания заказа ..

Все работает, это просто, что ссылка урезается где & полукокс ..

Я попытался с differend кодировки и расшифровки, но я застрял с этим через несколько часов ..

Поэтому я хотели бы некоторую помощь от вас мастеров кодирования ..

Примечания: Существуют несколько частей, в основном донных, в вставленном трески e, которые, вероятно, не нужны для ответа на вопрос, но я все равно их вставил на всякий случай, если они понадобятся.

Мой код:

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); 
     } 
    }); 

Заранее спасибо ребята!

+0

Что вырезаете и где? Вы имеете в виду «tracklink»? Устанавливается ли он в JS-коде клиента, на сервере, где вы его получили, или в отправленном письме? – JJJ

+0

tracklink, который является частью kommentar, он получает разрезанный по электронной почте, который отправляется, поэтому & и все после этого не отображаются. – TryingToLearn

ответ

0

Функция encodeURIComponent преобразует специальные символы в строку в данные формы и формат строки запроса.

Это говорит о том, что, поскольку вы используете jQuery, не создавайте строку вручную. Передайте объект data и пусть jQuery закодирует его для вас.

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

Спасибо .. Я изменил часть данных в массив, но теперь он кодируется в: https : //www.silversmurfen.se/? route = common/track & amp% 3bnr = aaa если мне это нужно: https://www.silversmurfen.se/?route=common/track&nr=aaa – TryingToLearn

+0

@TryingToLearn - Я не понимаю, как это можно сделать. Он должен преобразовать символы '&' в 'kommentar' в'% 26' и ничего не конвертировать в '&'. У вас должен быть другой код, который делает это. – Quentin

Смежные вопросы