javascript function with jquery

javascript function with jquery

本文关键字:jquery with function javascript      更新时间:2023-09-26

我有一个小函数,我尝试为她传递 2 个参数,但不起作用......有什么想法/建议吗?

ajax没有问题,我已经测试了没有参数的代码,直接放在函数上,但打电话给她,不起作用,对不起糟糕的英语!!

function myfunction(var_data, var_field)
{
  $(function()
  {
    $.ajax
    ({
        url : "myscriptajax.php",
        type: "POST",
        data: var_data + $(this).val(),
        dataType:"json",
        success: function(data)
        {
          if(data.status)
          {
             $(var_field).val(data.somevar);
          }
        }
    })
 })
}
$("#medicocrm").change
  (function()
  {
       myfunction("crm=","#mediconome");
  })

//在这里之后编辑以获得最佳解释。那行得通:

$(function()
{
    $("#medicocrm").change
        (function()
        {
        $.ajax
        ({
            url : "abertura.ajax.php",
            type: "POST",
            data: "crm=" + $(this).val(),
            dataType:"json",
            success: function(data)
            {
                if(data.status)
                {
                    $("#mediconome").val(data.nome);
                }
            }       
        })
        return false;
    })
$("#participantematricula").change
    (function()
    {
        $.ajax
        ({
            url : "abertura.ajax.php",
            type: "POST",
            data: "matricula=" + $(this).val(),
            dataType:"json",
            success: function(data)
            {
                if(data.status)
                {
                    $("#participantenome").val(data.nome);
                }
            }
        })
        return false;
    })

''我用第一个答案试过这个...

而且那行不通:

function verifica(dados,campoid,camponome){
    $.ajax({
        url : "abertura.ajax.php",
        type: "POST",
        data: dados + campoid,
        dataType:"json",
        success: function(data){
            if(data.status){
                $(camponome).val(data.nome);
            }
        }
    });
    return false;
};
$("#medicocrm").change(function(){
verifica("crm=",this.value,"#mediconome");
});
$("#participante_id").change(function(){
verifica("id=",this.value,"#participante_nome");
});

只是做一个改造。

function myfunction(var_data, var_field, elementValue){
    $.ajax({
        url : "myscriptajax.php",
        type: "POST",
        data: var_data + elementValue,
        dataType:"json",
        success: function(data){
          if(data.status){
             $(var_field).val(data.somevar);
          }
        }
    });
};
$("#medicocrm").change(function() {
       myfunction("crm=","#mediconome", this.value);
});

在这里,我们删除了DOMContentLoaded侦听器,并将元素的值传递给函数。

您可以使用$(this).val();代替漂浮在船上this.value任何东西。

你有很多包装器正在进行,你对$(this)的使用可能会破坏它。这样的事情应该有效:

function myfunction(var_data,$var_field,whatever_this_is_val){
    $.ajax({
        url : "myscriptajax.php",
        type: "POST",
        data: var_data + whatever_this_is_val,
        dataType:"json"
    }).done(function(data){
        if(data.status){
             $var_field.value = data.somevar;
        }
    });
}
$("#medicocrm").on('change',function(){
    myfunction("crm=",this,document.getElementById(whatever_this_is).value);
});

变化:

  • 删除了不必要的包装器
  • 逝世$(this)...你需要指定它
  • 清理语法以现代使用.done()
  • 在易于应用的地方使用原版 JS

您还应该考虑明确声明它调用的页面是 JSON,而不是在调用中说dataType:'json'。它以这种方式防弹,并且在各个方面执行的工作更少。

编辑

如果您真的只是传递更改的项目的值,最简单的方法:

function myfunction(var_data,$var_field){
    $.ajax({
        url : "myscriptajax.php",
        type: "POST",
        data: var_data + $var_field.value,
        dataType:"json"
    }).done(function(data){
        if(data.status){
             $var_field.value = data.somevar;
        }
    });
}
$("#medicocrm").on('change',function(){
    myfunction("crm=",this);
});

这种方式奏效了!!!!!有很多包装纸,但是...工作!

callajax = (function(origem,dados,campo)
{$.ajax({
    url : "abertura.ajax.php",
    type: "POST",
    data: origem + "=" + dados,
    dataType:"json",
    success: function(data){
        if(data.status){
            $(campo).val(data.nome);
        }
        else{
            $(campo).val("");
            alert('Não encontrado');
        }
    }
})
});
$(function(){$("#medicocrm").change
    (function(){
        callajax('crm',this.value,"#mediconome");
    });
});
$(function(){$("#participantematricula").change
(function(){
        callajax('matricula',this.value,"#participantenome");
    });
});
$(function(){$("#prestadorcodsoc").change
    (function(){
        callajax('codsoc',this.value,"#prestadornome")
    });
});