Отправка многострочного текста по методу POST с помощью jQuery

#jquery #asp.net-mvc #ajax #vb.net #post

#jquery #asp.net-mvc #ajax #vb.net #Публикация

Вопрос:

У меня есть эта функция в jQuery:

 var dataGet = 'LimFile='   $('#LimFile').val()   'amp;ProductNumber='   $('#ArtNoInsert').val();
            $.ajax({
                type: 'post',
                url: '/Admin/InsertLim',
                data: dataGet,
                success: function (r) {
                    alert('Product lim entry inserted!');
                },
                error: function (req, status, error) {
                    alert(error)
                }
            })
  

И предполагается, что он считывает несколько строк из LimFile и отправляет их в строку в VB.NET .
Проблема в том, что когда я его отлаживаю, я вижу, что строка присутствует во всю длину. И когда я разделяю его с помощью vbNewLine, это показывает, что есть только 1 строка, то есть ничего не разделено, как будто новые строки были потеряны.

Комментарии:

1. Прочитайте документацию ( api.jquery.com/jQuery.ajax ) в разделе данные. вы преобразуете свои многострочные данные в одну строку. Вместо этого передайте его как объект / массив.

Ответ №1:

Вы никогда не должны передавать строку как data , а скорее объект, поскольку в этом случае jQuery заботится о ее правильном кодировании:

 var dataGet = {LimFile:  $('#LimFile').val(), ProductNumber: $('#ArtNoInsert').val()};
  

Вероятно, это устраняет вашу проблему — при отправке простой строки, содержащей разрывы строк, они могут что-то нарушать.


Кроме того, обратите внимание, что мягкая перенос строки (например, при достижении конца строки без нажатия ENTER клавиши) не отправляется на сервер. Хотя вы могли бы использовать wrap="hard" , как предложил @RoryMcCrossan, лучшим решением является перенос текста на сервер, поскольку вы все равно не можете доверять клиенту.

Комментарии:

1. Тем не менее, когда я разделяю с помощью vbNewLine, это все еще одна большая строка, я разделяю ее следующим образом: limTestValues = csvValues. Разделение (vbNewLine). ToList

2. Вы уверены, что в тексте есть и vbNewLine (вероятно rn ) разрывы строк? В зависимости от операционной системы пользователя текст может содержать только n разрывы строк.

3. Хм, текст действительно содержит их, и теперь я попробовал разделить по среде. Перевод строки, не работает восемь раз =/

Ответ №2:

Почему бы просто не экранировать $(‘#LimFile’).val() на стороне отправки и не экранировать его на стороне получения? Я нахожу это намного более «безопасным».