Операторы JS в строке, отправленной через AJAX, приводят к сбою запроса - PullRequest
0 голосов
/ 19 октября 2018

Я сделал менеджер паролей, но пароли не подобраны полностью, если он содержит какой-либо оператор javascript.Я хочу сделать AJAX-вызов, но если моя строка из моего поля ввода содержит + или любой другой оператор, строка просто останавливается.Как можно игнорировать операторы строк?

if ($("#editpswform").data("changed")) {
  id = $('#passid').text();
  name = $('#pswname').val();
  url = $('#pswurla').text();
  username = $('#pswusr').val();
  password = $('#pswi').val();
  notes = $('#pswnotes').val();
  var dataString = 'EditPSW=true' + '&id=' + id + '&name=' + name + '&url=' + url + '&username=' + username + '&password=' + password + '&notes=' + notes;

  $.ajax({
    type: "POST",
    url: "utils.php",
    data: dataString,
    success: function(msg) {
      console.log(msg);
      $.ajax({
        url: "utils.php?setsession=Password saved!"
      }).done(function() {
        load_data();

        function load_data(query) {
          $.ajax({
            url: "search.php",
            method: "POST",
            data: {
              query: query
            },
            success: function(data) {
              $('#contentmain').html(data);
            }
          });
        }

        OpenNotification();
      });
    },
    error: function() {
      $.ajax({
        url: "utils.php?setsession=Error saving password!",
      }).done(function() {
        OpenNotification();
      });
    }
  });
} else {
  $.ajax({
    url: "utils.php?setsession=No changes made!",
  }).done(function() {
    OpenNotification();
  });
}

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

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

var dataString = {
  EditPSW: true,
  id: id,
  name: name,
  url: url,
  username: username,
  password: password,
  notes: notes
}
0 голосов
/ 19 октября 2018

Возможно, вам нужно закодировать каждое значение в URL.Как это:

var dataString = 'EditPSW=true' + '&id=' + encodeURIComponent(id) + '&name=' + encodeURIComponent(name) + '&url=' + encodeURIComponent(url) + '&username=' + encodeURIComponent(username) + '&password=' + encodeURIComponent(password) + '&notes=' + encodeURIComponent(notes);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...