Estoy tratando de crear una solicitud AJAX simple que devuelva algunos datos de una base de datos MySQL. Aquí está mi función a continuación:
function AJAXrequest(url, postedData, callback) {
$.ajax() ({
type: 'POST',
url: url,
data: postedData,
dataType: 'json',
success: callback
});
}
... y aquí es donde lo llamo, analizando los parámetros requeridos:
AJAXrequest('voting.ajax.php', imageData, function(data) {
console.log("success!");
});
Sin embargo, mi devolución de llamada de éxito no se ejecuta (ya que "¡éxito!" No se registra en la consola), y aparece un error en mi consola:
TypeError: $.ajax(...) is not a function.
success: callback
¿Qué significa esto? He hecho solicitudes AJAX antes donde el evento de éxito desencadena una función anónima dentro de $ .ajax, pero ahora estoy tratando de ejecutar una función con nombre separada (en este caso, una devolución de llamada). ¿Cómo hago para esto?
$.ajax
sin argumentos ($.ajax()
) y el valor de retorno es un objeto jqXHR, que no es una función. Por$.ajax()(...)
lo tanto arrojará un error.Respuestas:
Ninguna de las respuestas aquí me ayudó. El problema era: estaba usando la versión delgada de jQuery , que tenía algunas cosas eliminadas, siendo ajax una de ellas.
La solución: simplemente descargue la versión normal (comprimida o no) de jQuery aquí e inclúyala en su proyecto.
fuente
$.ajax
elimina de la compilación "delgada"?Vuelva a verificar si está utilizando la versión completa de jquery y no alguna versión delgada.
Estaba usando el enlace jquery cdn-script que viene con jquery. El problema es que, por defecto, es slim.jquery.js, que no tiene la
ajax
función. Por lo tanto, si está utilizando el enlace de secuencia de comandos jquery de versión delgada (copiado y pegado del sitio web de Bootstrap), use la versión completa.Es decir, usar en
<script src="https://code.jquery.com/jquery-3.1.1.min.js">
lugar de<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"
fuente
No estoy seguro, pero parece que tiene un error de sintaxis en su código. Tratar:
Tenía corchetes adicionales al lado de los
$.ajax
cuales no eran necesarios. Si aún recibe el error, el archivo de script jQuery no se carga.fuente
$.ajax()();
. Este es JavaScript válido. Significa "llame$.ajax
y lo que sea que devuelva, llámelo también". Pero$.ajax
no devuelve una función (que podría llamarse), devuelve unjqXHR
objeto, por lo que arroja un error. Su respuesta es correcta, lo adicional()
es el problema, pero la descripción del problema no es correcta (no es un error de sintaxis, bueno, al menos no para el analizador).$
), pero tampoco es un error de sintaxis porque es JS válido. Simplemente no es la sintaxis adecuada para el comportamiento deseado, por lo que causa un error de tiempo de ejecución como lo explica Felix.El pago y envío de documentación Jquery
fuente
Tiene un error en su función AJAX, demasiados corchetes, intente en su lugar
$.ajax({
fuente
Consulte la versión jquery min que incluye ajax:
fuente
Hay un error de sintaxis ya que ha colocado paréntesis después de la función ajax y otro conjunto de paréntesis para definir la lista de argumentos:
Como has escrito: -
El paréntesis alrededor de ajax debe eliminarse, debe ser: -
fuente
Encontré la misma pregunta, y mi solución fue: agregar el script JQuery.
Especialmente, debemos asegurarnos de que se cargue el JQuery correspondiente cuando depuremos nuestro js bajo firefox / chrome.
fuente
Si está utilizando la plantilla html de bootstrap, recuerde eliminar el enlace a jquery slim en la parte inferior de la plantilla. Publico este detalle aquí ya que aún no puedo comentar las respuestas.
fuente
Para cualquiera que intente ejecutar esto en nodejs : ¡No funcionará de inmediato, ya que jquery necesita un navegador (o similar)! Solo estaba tratando de ejecutar la importación y estaba registrando lo
console.log($)
que escribió[Function]
y luego también loconsole.log($.ajax)
que regresóundefined
. No tuvetsc
errores y tuve autocompletar desde intellij, así que me preguntaba qué está pasando.Luego, en algún momento, me di cuenta de que ese
node
podría ser el problema y no el mecanografiado. Intenté el mismo código en el navegador y funcionó. Para que funcione, debes ejecutar:(créditos: https://stackoverflow.com/a/4129032/3022127 )
fuente
Esto es demasiado tarde para una respuesta, pero esta respuesta puede ser útil para futuros lectores.
Me gustaría compartir un escenario en el que, digamos, hay varios archivos html ( un html base y varios sub-HTML ) y $ .ajax se está utilizando en uno de los sub-HTML.
Supongamos que en el sub-HTML, js se incluye a través de la URL " https://code.jquery.com/jquery-3.5.0.js " y en el HTML base / primario, a través de la URL - " https: //code.jquery .com / jquery-3.1.1.slim.min.js ", entonces la versión delgada de JS se usará en todas las páginas que usan este sub-HTML, así como el HTML base mencionado anteriormente.
Esto es especialmente cierto en el caso de usar el marco de arranque que carga js usando " https://code.jquery.com/jquery-3.1.1.slim.min.js ".
Por lo tanto, para resolver el problema, debe asegurarse de que en todas las páginas, js se incluya a través de la URL " https://code.jquery.com/jquery-3.5.0.js " o la URL más reciente que contenga todas las bibliotecas de JQuery.
Gracias a Lily H. por señalarme hacia esta respuesta.
fuente
déjame compartir mi experiencia:
mi diseñador de páginas html usa:
cuando creo una solicitud AJAX simple, aparece un error que dice: TypeError: $ .ajax (...) no es una función
Entonces, agrego:
entonces, al menos me funciona perfectamente.
fuente