Estou tentando criar uma solicitação AJAX simples que retorna alguns dados de um banco de dados MySQL. Aqui está a minha função abaixo:
function AJAXrequest(url, postedData, callback) {
$.ajax() ({
type: 'POST',
url: url,
data: postedData,
dataType: 'json',
success: callback
});
}
... e é aqui que eu chamo, analisando os parâmetros necessários:
AJAXrequest('voting.ajax.php', imageData, function(data) {
console.log("success!");
});
No entanto, meu retorno de chamada de sucesso não é executado (como "sucesso!" Não é registrado no console) e recebo um erro no meu console:
TypeError: $.ajax(...) is not a function.
success: callback
O que isto significa? Já fiz solicitações AJAX antes de o evento de sucesso disparar uma função anônima dentro de $ .ajax, mas agora estou tentando executar uma função nomeada separada (neste caso, um retorno de chamada). Como faço para fazer isso?
$.ajax
sem argumentos ($.ajax()
) e o valor de retorno é um objeto jqXHR, que não é uma função. Portanto$.ajax()(...)
, lançará um erro.Respostas:
Nenhuma das respostas aqui me ajudou. O problema era: eu estava usando a versão compacta do jQuery , que tinha algumas coisas removidas, sendo o ajax uma delas.
A solução: basta baixar a versão regular (compactada ou não) do jQuery aqui e incluí-la no seu projeto.
fonte
$.ajax
removido da compilação "slim"?Verifique se você está usando a versão completa do jquery e não uma versão slim.
Eu estava usando o link jquery cdn-script que acompanha o jquery. O problema é que este, por padrão, é slim.jquery.js, que não possui a
ajax
função. Portanto, se você estiver usando o link de script jquery da versão slim (copiada e colada no site do Bootstrap), use a versão completa.Ou seja, use em
<script src="https://code.jquery.com/jquery-3.1.1.min.js">
vez de<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"
fonte
Não tenho certeza, mas parece que você tem um erro de sintaxe no seu código. Experimentar:
Você tinha colchetes extras ao lado dos
$.ajax
quais não eram necessários. Se você ainda receber o erro, o arquivo de script jQuery não será carregado.fonte
$.ajax()();
. Este é um JavaScript válido. Significa "ligar$.ajax
e o que quer que retorne, ligue também". Mas$.ajax
não retorna uma função (que poderia ser chamada), retorna umjqXHR
objeto e, portanto, gera um erro. Sua resposta está correta, o adicional()
é o problema, mas a descrição do problema não está correta (não é um erro de sintaxe, pelo menos não para o analisador).$
), mas também não é um erro de sintaxe, pois é JS válido. Não é apenas uma sintaxe apropriada para o comportamento desejado, portanto, causa um erro de tempo de execução, conforme explicado por Felix.Caixa A documentação do jQuery
fonte
Você tem um erro na sua função AJAX, entre parênteses demais, tente
$.ajax({
fonte
Consulte a versão min do jquery que inclui o ajax:
fonte
Há um erro de sintaxe quando você colocou parênteses após a função ajax e outro conjunto de parênteses para definir a lista de argumentos: -
Como você escreveu: -
Os parênteses em torno do ajax devem ser removidos e devem ser: -
fonte
Encontrei a mesma pergunta e minha solução foi: adicione o script JQuery.
Especialmente, devemos garantir que o JQuery correspondente seja carregado quando depurarmos nossos js no firefox / chrome.
fonte
Se você estiver usando o modelo html de bootstrap, lembre-se de remover o link para jquery slim na parte inferior do modelo. Eu posto esses detalhes aqui, pois ainda não posso comentar as respostas.
fonte
Para qualquer pessoa que tente executar isso no nodejs : Não funcionará imediatamente , pois o jquery precisa de um navegador (ou similar)! Eu estava apenas tentando executar a importação e estava registrando o
console.log($)
que escreveu[Function]
e depois oconsole.log($.ajax)
que retornouundefined
. Eu não tinhatsc
erros e tinha preenchido automaticamente a partir do intellij, então fiquei imaginando o que estava acontecendo.Então, em algum momento, percebi que esse
node
poderia ser o problema e não o texto datilografado. Eu tentei o mesmo código no navegador e funcionou. Para fazê-lo funcionar, você precisa executar:(créditos: https://stackoverflow.com/a/4129032/3022127 )
fonte
É tarde demais para uma resposta, mas essa resposta pode ser útil para futuros leitores.
Gostaria de compartilhar um cenário em que, digamos, há vários arquivos html ( um html base e vários sub-HTMLs ) e $ .ajax está sendo usado em um dos sub-HTMLs.
Suponha que no sub-HTML, js seja incluído na URL " https://code.jquery.com/jquery-3.5.0.js " e no HTML base / pai, na URL - " https: //code.jquery .com / jquery-3.1.1.slim.min.js ", a versão reduzida do JS será usada em todas as páginas que usam esse sub-HTML, bem como no HTML básico mencionado acima.
Isso é especialmente verdade no caso de usar a estrutura de autoinicialização que carrega js usando " https://code.jquery.com/jquery-3.1.1.slim.min.js ".
Portanto, para resolver o problema, é necessário garantir que, em todas as páginas, js seja incluído via URL " https://code.jquery.com/jquery-3.5.0.js " ou seja qual for o URL mais recente que contém todas as bibliotecas JQuery.
Agradeço a Lily H. por me indicar essa resposta.
fonte
deixe-me compartilhar minha experiência:
meu designer de página html usa:
quando crio uma solicitação AJAX simples, obtendo um erro dizendo: TypeError: $ .ajax (…) não é uma função
Então, eu adiciono:
então, funciona perfeitamente para mim, pelo menos.
fonte