0

我是 Jquery 的新手。

我想在同一个按钮单击上插入和编辑值。以下代码正在使用。它工作正常,并且在插入和删除中都使用通用代码。

function save(){

if($('#job').val()==" "){
    if(value!=false){
    var data = {        
        "names": $('#names').val(),            
        "server": $('#server').val()
    };
    $.ajax({
        type: 'post',
        url: "/insert",
               });
  }
}
else{

    if(value!=false){
    var data = {

    };
    $.ajax({
        type: 'post',
        url: "/edis",
                   }
    });
  }
}
}

是否有任何可能的方法来删除代码重复以及如何压缩此代码

4

4 回答 4

2

更新

function saveToDB(){
var value= pageValidation();
var job;
var msg;

if(value!=false){

var data = {
        "jobid": $('#jobid').val(),
        "names": $('#names').val(),
        "os": $('#OS').val(),
        "browser": $('#browsers').val(),
        "version": $('#version').val(),
        "scripttype": $('#testscripts').val(),
        "server": $('#server').val()
    };

if($('#jobid').val().trim() == ""){
    job = "/insertJobs";
    msg = "job insertion success";
    delete data['jobid'];
}
else{
    job = "/editJobs";
    msg = "job Updated succesfully!!";
}



    $.ajax({
        type: 'post',
        url: job,
        dataType: "json",
        data: data,
        success: function (response) {
            console.log(msg);
            console.log(response);
            displayjobs();
        }
    });
  }
}
于 2013-08-27T09:10:58.893 回答
1
function saveToDB() {
    var value= pageValidation();
    var type = "update";
    if ($('#jobid').val()==" ") {   //set the flag
        type = "insert"
    }
    if(value!=false) {
        var data = {        
            "type": type, //See this, insert/update, check this on server side
            "names": $('#names').val(),
            "os": $('#OS').val(),
            "browser": $('#browsers').val(),
            "version": $('#version').val(),
            "scripttype": $('#testscripts').val(),
            "server": $('#server').val()
        };
        if (type == "update") {
            data.jobid = $('#jobid').val();
        }
        $.ajax({
            type: 'post',
            url: "/insertJobs",
            dataType: "json",
            data: data,
            success: function (response) {
                if (type == "insert") {
                    console.log("job insertion success");
                } else {
                    console.log("job Updated succesfully!!");
                }
                console.log(response);
                displayjobs();
            }
        });
    }
}
于 2013-08-27T09:05:13.020 回答
1

在您的主要条件下,您复制了几乎相同的代码。您可以将此代码转换为函数,并使用函数参数覆盖小的差异。在主要条件下调用此函数应该可以解决问题。

这是我的自定义(我没有尝试代码):

function saveToDB(){
  var value = pageValidation();

  if($('#jobid').val()==" ") manageData('/InsertJobs'); else manageData('/editJobs', true);

}

function manageData(url, value = false){
  var data = {
      "jobid": $('#jobid').val(),        
      "names": $('#names').val(),
      "os": $('#OS').val(),
      "browser": $('#browsers').val(),
      "version": $('#version').val(),
      "scripttype": $('#testscripts').val(),
      "server": $('#server').val()
  };
  $.ajax({
      type: 'post',
      url: url,
      dataType: "json",
      data: data,
      success: function (response) {
          if($value == false) console.log("job insertion success"); else console.log("job Updated succesfully!!");
          console.log(response);          
          displayjobs();
      }
  });
}
于 2013-08-27T09:13:13.600 回答
1

1)扩展方法内变量的 范围saveToDB

var data = {        
        "names": $('#names').val(),
        "os": $('#OS').val(),
        "browser": $('#browsers').val(),
        "version": $('#version').val(),
        "scripttype": $('#testscripts').val(),
        "server": $('#server').val()
    };
var urlLink;
var message;

2)从您的代码看来,value变量起着至关重要的作用,因此将其作为第一个条件。

3)虽然分配数据对象不会有job所以在这种情况下你可以添加它。

if($('#jobid').val()==" "){
 urlLink = "/insertJobs";
 message = "job insertion success";
}
else {
 data.job = $('#jobid').val();  // Add job to data object
 urlLink = "/editJobs";
 message = "job Updated succesfully!!";
}

最后你的代码会像

function saveToDB(){
    var value= pageValidation();
    if(value!=false){
        var data = {        
                "names": $('#names').val(),
                "os": $('#OS').val(),
                "browser": $('#browsers').val(),
                "version": $('#version').val(),
                "scripttype": $('#testscripts').val(),
                "server": $('#server').val()
            };  
        if($('#jobid').val()==" "){
         urlLink = "/insertJobs";
         message = "job insertion success";
        }
        else {
         data.job = $('#jobid').val();
         urlLink = "/editJobs";
         message = "job Updated succesfully!!";
        }           
        $.ajax({
            type: 'post',
            url: urlLink,
            dataType: "json",
            data: data,
            success: function (response) {
                console.log(message);
                console.log(response);
                displayjobs();
            }
        });
      }
}
于 2013-08-27T09:18:28.827 回答