2012-02-05 3 views
1

Я не могу сейчас смотреть на таблицы mysql ... но я не думаю, что «+» делает это в таблице.Плюс знак исчезает на стороне сервера?

Я проверил magic_guotes и включен. Однако magic_quotes не должен ничего делать с знаком «+», поскольку он относится только к экранированию символов, используемых базой данных.

Кроме того, я проверил свой regular expressions на клиенте и сервере (javascript и php), и нет ничего, чтобы удалить знаки «+».

Я также использую htmlentites(), но я не верю + является сущностью html, и даже если бы это было, это должно было сделать ее суставной сущностью, чем характер.

Это оставляет json_encode, но я был в состоянии повторить символы перед клиентом перед кодированием и все еще мог видеть, что знак «+» не был.

Я проверил все 5 мест и не могу определить, куда идет мой знак +. Кажется, база данных mysql возвращает пространство, где должен быть знак +.

Ajax Serialize

function ajax_serialize(form_name) 
{ 
    var return_string='', 
     form_elements=document.forms[form_name].elements, 
     iterator; 
    for(iterator = 0; iterator < form_elements.length; iterator++) 
    { 
     if(form_elements[iterator].name) 
     { 
      if(form_elements[iterator].type === 'checkbox' && form_elements[iterator].checked === false) 
      { 
       return_string += form_elements[iterator].name + "=0&"; 
      } 
      else 
      { 
       return_string += form_elements[iterator].name + "=" + form_elements[iterator].value+"&"; 
      } 
     } 
    } 
    return_string = return_string.slice(0, -1); 
    return return_string; 
} 

Ajax Tweet

function interface_tweet() 
{ 
    var form_name = 'tweet', 
     response_div = form_name + '_response', 
     tw_text = new Text(form_name), 
     tw_message = new Message(response_div); 

    if(Constant.VALIDATE_ON === 1) 
    { 
     if(!tw_text.checkEmpty()) 
     { 
      tw_message.display('empty'); 
      return; 
     } 

     if(!tw_text.checkPattern('tweet')) 
     { 
      tw_message.display('tweet'); 
      return; 
     } 
    } 

    Ajax.repeatUseAjaxObject(Constant.GATEWAY, ajax_serialize('tweet') + '&ajax_type=ControlTweet_add' , ajax_tweet ,'tweet_fill'); 
    document.getElementById('tweet_input').value=''; 
    document.getElementById('tweet_response').innerHTML=''; 
} 
+3

** Я не могу смотреть на таблицы mysql прямо сейчас ... но я не думаю, что «+» делает это в таблице. ** Вы должны вернуться, когда сможете ... – deed02392

+0

Вы отправляете это '+' из формы или откуда вы ее взяли? Если вы пытаетесь отправить данные с помощью «+» из формы с помощью ajax или любого вида javascript, вы должны использовать encodeURIComponent для данных (jQuery делает это автоматически, если вы используете его в правильном направлении) – Cheery

+0

I ajax опубликовал его из формы –

ответ

2

Это то, что вы должны иметь

return_string += encodeURIComponent(form_elements[iterator].name) + "=0&"; 

и

return_string += encodeURIComponent(form_elements[iterator].name) + "=" 
       + encodeURIComponent(form_elements[iterator].value)+"&"; 

если у вашего form_elements[iterator].name нет символов, которые необходимо закодировать, то для этого вы можете удалить encodeURIComponent.

+0

Я понимаю, что теперь мне приходится декодировать данные, выходящие из базы данных? –

+0

@ stack.user.0 Вам не нужно его декодировать - это делается автоматически сервером в момент получения данных из формы. Это «собственное» представление данных, когда оно отправляется с помощью запроса GET или POST. – Cheery

+0

? хорошо ... мой ум ошеломлен тем, как много обработки текста продолжается для простейших обновлений БД .... надеюсь, что я закончил сейчас ... еще раз спасибо. –

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