Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

FabianoSouza

& (e comercial) gerando erro ao passar dados via AJAX

Recommended Posts

Ocorre a perda da parte da string que estiver após o & sempre que tento gravar uma string que contenha & (o "e" comercial).

Esse é o trecho que que envia os dados pelo AJAX. Chequei o código todo. O erro só pode estar neste trecho.

		$obj.send(
		encodeURI(
		"codServico=" + $codServico +
		"&perfil=" + $titulo +
		"&statusItem= " + $valorRadioStItem +
		"&obs=" + $obs +
		"&flagFav=" + $flagFav
		)
		);

Help por favor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não faz ideia do que acontece quando tem um & em alguma das variáveis que você concatena?

 

O problema é a perda da parte da string que estiver após o &.

 

Como resolvo isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ocorre erro na aplicação sempre que tento gravar uma string que contenha & (o "e" comercial).

Esse é o trecho que que envia os dados pelo AJAX. Chequei o código todo. O erro só pode estar neste trecho.

		$obj.send(
		encodeURI(
		"codServico=" + $codServico +
		"&perfil=" + $titulo +
		"&statusItem= " + $valorRadioStItem +
		"&obs=" + $obs +
		"&flagFav=" + $flagFav
		)
		);

Ocorre erro se a variável $titulo tiver o caractére & em sua string.

Help por favor.

 

O problema é a perda da parte da string que estiver após o &.

Como resolvo isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Fabiano Souza

Cara o problema provavelmente está relacionado a sua variável e não a concatenação

 

como pode ver no exemplo abaixo:

var $codServico = '123';
var $titulo = 'Titulo de teste com & funcionando!';
var $valorRadioStItem = '1010';
var $obs = 'Está observação terá caracters especiais';
var $flagFav = '1';
encodeURI(
		"codServico=" + $codServico +
		"&perfil=" + $titulo +
		"&statusItem= " + $valorRadioStItem +
		"&obs=" + $obs +
		"&flagFav=" + $flagFav
		)

o resultado é :

 

"codServico=123&perfil=Titulo%20de%20teste%20com%20&%20funcionando!&statusItem=%201010&obs=Est%C3%A1%20observa%C3%A7%C3%A3o%20ter%C3%A1%20caracters%20especiais&flagFav=1"

 

da um console.log() nas variaveis para o ver o que está retornando;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz testes no sistema todo.

Testei exaustivamente o código ASP (que faz o insert via stored procedure).

O resultado é desanimador.

Todos os AJAX que uso para gravar, apresetam o mesmo problema.

O problema ocorre se na estring existr o & ou o %.

 

Se alguém tiver disposição para dar uma mão e rodar o código, ficarei agradecido.

Aqui é o HTML com o JS

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento sem título</title>
<script>
function createXMLHTTP()
{
  var ajax;
  try
  {
   ajax = new ActiveXObject("Microsoft.XMLHTTP");
  }
  catch(e)
  {
   try
   {
    ajax = new ActiveXObject("Msxml2.XMLHTTP");
    alert(ajax);
   }
   catch(ex)
   {
    try
    {
     ajax = new XMLHttpRequest();
    }
    catch(exc)
    {
      alert("Seu navegador não oferece suporte a requisiçoes AJAX.");
      ajax = null;
    }
   }
   return ajax;
  
  }
     var arrSignatures =
  ["MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0",
     "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP",
     "Microsoft.XMLHTTP"];
     for (var i=0; i < arrSignatures.length; i++)
     {
    try
    {
     var oRequest = new ActiveXObject(arrSignatures[i]);
     return oRequest;
    }
    catch (oError)
    {
       }
     }
 
      throw new Error("MSXML não está instalado em seu computador.");
}

// AJAX
function cadastraItem()
{
var titulo = "XPTO&Brasil"
var $obj
$obj = createXMLHTTP();
$obj.open("post", "insert.asp", true);
$obj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
$obj.onreadystatechange=function(){

if ($obj.readyState == 4 && $obj.status == 200){

alert($obj.responseText)
}
}
  $obj.send("perfil="+titulo);

}
</script>
</head>

<body>
<button type="button" name="gravar" id="gravar" onClick="cadastraItem();">Gravar</button>

</body>
</html>

Aqui o ASP só para exercitar. O valor da variável perfil chega apenas com a string antes do &.

Por alguma razão o JS está conrtando a string que é entregue ao ASP.

 <%
perfil = Request.Form("perfil")
response.Write(perfil)
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.