1

我有一个小功能,我尝试为她传递 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");
});
4

3 回答 3

4

只做一个改造。

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

于 2013-10-14T20:07:33.107 回答
0

这种方法有效!!!!!!!有很多包装器,但是...有效!

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")
    });
});
于 2013-10-15T15:05:47.850 回答
0

你有很多包装器在进行,你的使用$(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().
  • 在易于应用的地方使用 vanilla 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);
});
于 2013-10-14T20:07:34.640 回答