未捕获的类型错误:非法调用

时间:2017-01-06 07:16:19

标签: jquery

我在wep应用程序中使用Datatables。我在尝试保存数据时遇到错误。我在其他文件上使用相同的代码,仅在这种情况下我收到错误消息。

jQuery-2.1.4.min.js:4 Uncaught TypeError: Illegal invocation
    at e (jQuery-2.1.4.min.js:4)
    at Ab (jQuery-2.1.4.min.js:4)
    at Ab (jQuery-2.1.4.min.js:4)
    at Ab (jQuery-2.1.4.min.js:4)
    at Ab (jQuery-2.1.4.min.js:4)
    at Function.n.param (jQuery-2.1.4.min.js:4)
    at Function.ajax (jQuery-2.1.4.min.js:4)
    at HTMLButtonElement.<anonymous> (opiniones.js:168)
    at HTMLDocument.dispatch (jQuery-2.1.4.min.js:3)
    at HTMLDocument.r.handle (jQuery-2.1.4.min.js:3)

这是代码:

   $(document).on("click","#btnsave",function(){




        var id = $("#txtid").val();
        var nombre = $("#txtnombre").val();
        var apellidos = $("#txtapellidos").val();

        var ciudad = $("#txtciudad").val("");
        var estado = $("#txtestado").val("");
        var pais = $("#txtpais").val("");
        var direccion = $("#txtdireccion").val("");
        var especialidad = $("#txtespecialidad").val("");
        var telefono = $("#txttelefono").val("");
        var instalaciones =$("#txtinstalaciones").val("");
        var atencion = $("#txtatencion").val("");
        var precio = $("#txtprecio").val("");
        var eficiencia = $("#txteficiencia").val("");
        var puntualidad =  $("#txtpuntualidad").val("");
        var lorecomendarias = $("#txtlorecomendarias").val("");
        var comentarios = $("#txtcomentarios").val("");
        var verificado = $("#txtverificado").val("");
        var usuario = $("#txtusuario").val("");
        var email = $("#txtemail").val("");

        var crud=$("#crudmethod").val();


      if(nombre == '' || nombre == null ){
        swal("AVISO","Campo Nombre es obligatorio","warning");
        $("#txtnombre").focus();
        return;
      }
      if(apellidos == '' || apellidos == null ){
          swal("AVISO","Campo Apellidos es obligatorio","warning");
          $("#txtapellidos").focus();
          return;
        }

      var value = {
        id: id,
        nombre: nombre,
        apellidos:apellidos,
       direccion: direccion,
       telefono: telefono,
       especialidad: especialidad,
       ciudad: ciudad,
       estado: estado,
       pais: pais,
       instalaciones:instalaciones,
       atencion: atencion,
       precio: precio,
       eficiencia: eficiencia,
       lorecomendarias: lorecomendarias,
       comentarios: comentarios,
       usuario: usuario,
       email: email,
       puntualidad: puntualidad,
       verificado: verificado,

        crud:crud
      };
      $.ajax( **<- this is line 168**
      {
        url : "save_opinion.php",
        type: "POST",
        data : value,
        success: function(data, textStatus, jqXHR)
        {
          var data = jQuery.parseJSON(data);
          if(data.crud == 'N'){
            if(data.result == 1){
              $.notify('Opinión guardada correctamente');
              var table = $('#table_cust').DataTable(); 
              table.ajax.reload( null, false );
              $("#txtnombre").focus();

        $("#txtnombre").val("");
        $("#txtapellidos").val("");
        $("#txtciudad").val("");
        $("#txtestado").val("");
        $("#txtpais").val("");
        $("#txtdireccion").val("");
        $("#txtespecialidad").val("");
        $("#txttelefono").val("");
        $("#txtinstalaciones").val("");
         $("#txtatencion").val("");
          $("#txtprecio").val("");
           $("#txteficiencia").val("");
           $("#txtpuntualidad").val("");
      $("#txtlorecomendarias").val("");
      $("#txtcomentarios").val("");
      $("#txtverificado").val("");
      $("#txtusuario").val("");
      $("#txtemail").val("");

              $("#crudmethod").val("N");
              $("#txtid").val("0");
              $("#txtnombre").focus();
            }else{
              swal("Error","Can't save customer data, error : "+data.error,"error");
            }
          }else if(data.crud == 'E'){
            if(data.result == 1){
              $.notify('Opinión modificada correctamente');
              var table = $('#table_cust').DataTable(); 
              table.ajax.reload( null, false );
              $("#txtnombre").focus();
            }else{
             swal("Error","Can't update customer data, error : "+data.error,"error");
            }
          }else{
            swal("Error","invalid order","error");
          }
        },
        error: function(jqXHR, textStatus, errorThrown)
        {
           swal("Error!", textStatus, "error");
        }
      });
    });

我不知道从哪里开始搜索这个问题。

1 个答案:

答案 0 :(得分:0)

您在ajax请求中发送的数据应该是错误的,您发送HTML元素而不是其某些参数的值,例如此处var ciudad = $("#txtciudad").val(""); 尝试删除所有参数并检查,然后读取并确保添加值,而不是HTML元素。