2016-09-27 54 views
1

我有一個包含不同輸入字段(大多數是文本值)的HTML表單,但只要一個額外字符被填充(例如%),我就無法檢索它。檢索輸入表單中的特殊字符

這裏是HTML表單:

<form id="myform" class="form-horizontal" action="javascript:notif()" > 
    <fieldset> 
    <div class="control-group"> 
     <label class="control-label" for="focusedInput">nom</label> 
     <div class="controls"> 
     <input name="nom" class="input-xlarge focused" id="focusedInput" type="text" value=""> 
     </div> 
    </div> 

    <div class="control-group"> 
     <label class="control-label" for="date01">Date</label> 
     <div class="controls"> 
     <input type="text" name="date" class="input-xlarge datepicker" id="date" value=""> 
     </div> 
    </div> 

    <div class="control-group"> 
     <label class="control-label" for="focusedInput">Titre</label> 
     <div class="controls"> 
     <input name="page" class="input-xlarge focused" id="focusedInput" type="text" value=""> 
     </div> 
    </div> 
... 

和JavaScript檢索字段:

var s_data = $('#myform').serializeArray(); 
      $.get("webAdd?nom="+s_data[0].value+"&date="+s_data[1].value+"&titre="+s_data[2].value+"&message="+s_data[3].value+"&page="+s_data[4].value+"&commentaires="+s_data[5].value,function(response) {}); 

我的問題很簡單,但我不能夠解決這個問題:一旦任何s_data [x]字段都包含諸如「25%折扣」之類的文本,則檢索到的文本字段爲空。

我知道%字符是用於其他目的,但我怎麼能檢索字段與任何特殊字符?

+0

如果你的'webAdd'處理的數據是以這種形式輸入的(包括只是保存數據),你應該使用'POST'而不是GET。這也會讓您在POST正文格式方面更加靈活,避免您在使用GET url參數時遇到的一些問題。有關一些非常基本的信息,請參閱[使用Ajax進行GET和POST](http://stackoverflow.com/q/715335/17300)。 –

回答

1

由於您正在請求網址,因此您需要對用戶輸入進行編碼。否則,URL將被錯誤地解析。爲此,請將每個s_data[0].value包裝在encodeURIComponent中,像這樣encodeURIComponent(s_data[0].value)。 這將編碼特殊字符,以便它們可以成爲URL的一部分而不會被破壞。

$.get("webAdd?nom="+encodeURIComponent(s_data[0].value)+"&date="+encodeURIComponent(s_data[1].value)+"&titre="+encodeURIComponent(s_data[2].value)+"&message="+encodeURIComponent(s_data[3].value)+"&page="+encodeURIComponent(s_data[4].value)+"&commentaires="+encodeURIComponent(s_data[5].value),function(response) {});

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent

0

你必須編碼傳遞給jQuery的查詢字符串,但看到你的表單輸入有您使用的查詢字符串的名字,這應該是直線前進,如果你讓jQuery的做你的工作

$.get("webAdd", $('#myform').serialize()).then(function(response) { 

});