2012-01-03 3 views
1

У меня есть html с формой. После того как пользователь отправит форму, значения в форме отправляются в базу данных с помощью ajax. Моя проблема заключается в том, что пользователь представляет форму со знаком плюс (+) в одном из полей, знак плюса не будет отображаться в db.Специальные символы Javascript

мой код:

function update() 
{ 
    var branch_id = 1; 
    var saleTitle = $("#title").val(); 
    var saleText = $("#text").val(); 
    var imgSrc = $("#imgSrc").html(); 
    var datastr ='branch_id=' + branch_id + '&saleTitle=' + saleTitle + 
       '&saleText=' + saleText + '&imgSrc=' + imgSrc + '&func=update'; 

     $.ajax({ 
     type: "POST", 
     url: "update.php", 
     data: datastr, 
     success: function(msg){ 
      //alert("Data Saved: " + msg); 
      if (msg == "") 
      { 
       $("#message").html("Update was successful!"); 
      } 
      else 
      { 
       $("#message").html("Error") + " " + msg; 
      } 
     } 
    }); 
} 
+0

вы проверили данные, которые вы получаете на стороне сервера от вызова Ajax? Вам нужно проверить, исходит ли он из js (который является кодом, который вы нам показываете) или с PHP (но вы не показывали нам код, который вы используете) – JMax

+0

Данные на стороне сервера - это строка без плюс знак. –

+0

Каков тип столбца в вашей базе данных? –

ответ

1

Передает объект, а не строка.

var dataobj = { 
    branch_id : branch_id, 
    saleTitle : saleTitle, 
    saleText : saleText, 
    imgSrc : imgSrc, 
    func  : "update" 
}; 
// … 
data: dataobj 

Тогда JQuery будет заботиться о спасаясь данных (+ означает пространство в этом формате данных) и конкатенации его в приложение/х-WWW-форм-urlencoded данные для вас.

+0

строку запроса? его сообщение! –

+0

теперь ваш ответ в порядке :) –

+0

Работает как шарм. Благодаря!! –

3

Использование: encodeURIComponent(xxx) на поле, которое имеет знак плюс

encodeURIComponent('[email protected]#$%^&*(){}[]=:/,;?+\'"\\') 

приведет:

~!%40%23%24%25%5E%26*()%7B%7D%5B%5D%3D%3A%2F%2C%3B%3F%2B'%22%5C 
+1

Это будет кодировать всю строку запроса, а не ее компонент. – Quentin

+1

На самом деле вы должны использовать encodeURIComponent вокруг отдельных переменных ('branch_id',' saleTitles') – Tomas

+1

@Quentin отредактирован. Благодарю. –

0

Вы можете попробовать JQuery Serialize http://api.jquery.com/serialize/

+0

Это не сработает. Не все данные состоят из значений полей формы: 'var imgSrc = $ (" # imgSrc "). Html();' – Quentin

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