getJSON retorno não está acontecendo
-
19-09-2019 - |
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?
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.