2011-07-06 15 views
1

私はjquery ajaxを使って投稿していますが、私が送った単語の中にはHTA + HIPERAQUITISM + DBLR、php recieve HTA HIPERAQUITISM DBLR空白スペースを+に変更すると、以下のコードが投稿されます。助けて!ajax-jqueryで投稿すると文章が空白になる+

  function getItemInfo(itemName, itemField, itemComparative, itemTable){ 

         var result = ""; 
         var nombreItem = itemName; 
         var campoItem = itemField; 
         var comparativeItem = itemComparative; 
         var tableItem = itemTable; 


         $.ajax({ 
          type: 'POST', 
          async: false, 
          url: 'modules/medicos/controller.php?fun=consul_item&nombre_item=consul_item'+ 
            '&nombre_item='+nombreItem+ 
           '&campo='+campoItem+ 
           '&comparador='+comparativeItem+ 
           '&tabla='+tableItem, 
          success: function(data) { 
           result = data.toString(); 
          }, 
          failure: function() { 
           result = ""; 
          } 
         }); 
         return result; 
        }//end function 
+0

私はそれはあなたが何であるかを少し困惑していますあなたは、+文字を含む送信したい文字列をいくつか持っていますが、それを空白の置換として扱われるのではなくその文字として保存し、スペース? –

答えて

0

これは、URL +にスペースが含まれているためです。

データをURLにエンコードしてからクエリ文字列に追加する必要があります。

encodeURIComponent()関数を使用して、値をクエリ文字列に追加する前にエンコードすることができます。

PHPコードがそれを拾ったら、そのようにあなたのコードは次のように更新する必要がありurldecode機能

で値をデコードすることができます

url: 'modules/medicos/controller.php?fun=consul_item&nombre_item=consul_item'+ 
            '&nombre_item='+encodeURIComponent(nombreItem)+ 
           '&campo='+encodeURIComponent(campoItem)+ 
           '&comparador='+encodeURIComponent(comparativeItem)+ 
           '&tabla='+encodeURIComponent(tableItem), 
+0

実際にencodeURIComponent()を使用して+文字をエンコードし(いくつかのものとともに)、escape()およびencodeURI()をそのままにします。 –

0

あなたのコードが正しいと思われます。これらの変数を1つずつ渡しています(nombreItem、campoItem、comparitem、tableItem)。だからあなたが言うことがうまくいかないことを本当に理解していない。

簡単にデータを渡すようにする提案:

$.ajax({ 
     type: 'POST', 
     async: false, 
     url: 'modules/medicos/controller.php', 
     data : ({ fun : consul_item, 
        nombre_item : nombreItem, 
        campo : campoItem, 
        comparador : comparativeItem, 
        tabla : tableItem }), 
     success: function(data) { 
      result = data; 
     }, 
     failure: function() { 
      result = ""; 
     } 
}); 

あなたはあなたが何をすべき1つのテキスト文字列としてすべてのあなたの情報を渡したい場合は、次の

... 
data: ({ test : consul_item + '+' + nombreItem + '+' + campoItem + '+' + comparativeItem + '+' + tableItem }), 
... 
関連する問題