Pergunta

Eu olhei para consultas semelhantes aqui, mas eu não consigo aplicá-las para o meu problema. Eu sou muito novo para jQuery, para que eu possa estar fazendo algo estúpido. Eu tenho um teste getJSON simples:

 $(document).ready(function() {
  $(".testurl").click(function() {
   // do a json call
   var url="testjson.php";
   var rc=$.getJSON(
    url,
    {parm1: "P1", parm2: "P2", parm3: "P3"},
    function(data){
     alert("callback function inline");
   });
   var x = 1;
  });
 });

que chama um script muito simples:

  header("Content-Type: application/json");
  echo "{\"results\": [";
  $arr = array();
  $arr[] = "{\"fld1\": \"result1\", \"fld2\": \"result2\", \"fld3\": \"result3\"}";
  echo implode(", ", $arr);
  echo "]}";

que retorna válido JSON (eu verifiquei em JSON fiapos)

O var rc que eu uso para receber o resultado do pedido tem os seguintes valores:

getResponseText \"{\"results\": [{\"fld1\": \"result1\", \"fld2\": \"result2\", \"fld3\": \"result3\"}]}\"" 
getReadyState 4
getStatus 200

Por que a função de retorno não fogo?

Foi útil?

Solução

Se o manipulador de clique é ligado a um elemento âncora então talvez a chamada ajax não tem tempo para executar antes de redirecionar para uma página diferente. Tente adicionar um return false para o callback clique:

$(".testurl").click(function() {
    // do a json call
    // ...
    return false;
});

Outras dicas

A chamada $ .getJSON é apenas atribuído a uma variável, ele não está sendo chamado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top