2010-08-26 2 views
0

Я хочу поставить свои две функции в одну. Они выглядят, как это сейчас:JS: имя функции («да/нет»);

function MeYouFriend(){ 
    $.ajax({ 
     type: "POST", 
     url: "misc/AddFriend.php", 
    data: { 
    mode: 'ajax', 
    friend: 'ignore', 
    uID : $('#uID').val(), 
    fID : $('#fID').val() 
    }, 
     success: function(msg){ 
$('#friendsPop').jGrowl('close'); 
     } 
    }); 
} 
function MeYouFriendY(){ 
    $.ajax({ 
     type: "POST", 
     url: "misc/AddFriend.php", 
    data: { 
    mode: 'ajax', 
     friend: 'confirm', 
    uID : $('#uID').val(), 
    fID : $('#fID').val() 
    }, 
     success: function(msg){ 
$('#friendsPop').jGrowl('close'); 
     } 
    }); 
} 

Разница только друг: «подтвердить» и друга: «игнорировать», как я могу положить их вместе в один и сделать это просто?

ответ

2

Изменить вызов

MeYouFriend(true) //To Confirm 
MeYouFriend(false) //To Ignore 

Чем изменить функцию, чтобы принять параметр.

function MeYouFriend(confirm){ 
    var c = confirm ? 'confirm' : 'ignore'; 

    $.ajax({ 
     type: "POST", 
     url: "misc/AddFriend.php", 
     data: { 
      mode: 'ajax', 
      friend: c, 
      uID : $('#uID').val(), 
      fID : $('#fID').val() 
     }, 
     success: function(msg){ 
      $('#friendsPop').jGrowl('close'); 
     } 
    }); 
} 

Alternate Слегка более компактная версия

function MeYouFriend(confirm){ 
    $.ajax({ 
     type: "POST", 
     url: "misc/AddFriend.php", 
     data: { 
      mode: 'ajax', 
      friend: confirm ? 'confirm' : 'ignore', 
      uID : $('#uID').val(), 
      fID : $('#fID').val() 
     }, 
     success: function(msg){ 
      $('#friendsPop').jGrowl('close'); 
     } 
    }); 
} 
+0

работает отлично принят – Karem

1

вы можете передать значение строки в качестве аргумента:

function MeYouFriend(friend){ 
    $.ajax({ 
     type: "POST", 
     url: "misc/AddFriend.php", 
    data: { 
    mode: 'ajax', 
     friend: friend, 
    uID : $('#uID').val(), 
    fID : $('#fID').val() 
    }, 
     success: function(msg){ 
$('#friendsPop').jGrowl('close'); 
     } 
    }); 
} 

тогда вы звоните MeYouFriend('ignore') или MeYouFriend('confirm')

+0

Единственная проблема заключается в том, что она оставляет место для ошибки ... т.е.: MeYouFriend («блины»); Я думаю, что наиболее логичным является логическое. – Dutchie432

+0

Привет. У меня есть ссылка внутри вызова $ .jgrowl, поэтому я не могу использовать '', поэтому, когда я делаю Karem

+0

Там тоже есть способы, но я не думаю, что это идеальное решение для вас. Счастливое кодирование. – Dutchie432

-1

можно добавить параметр, и решить, основываясь на содержании этого, что делать:

function MeYouFriend(doConfirm){ 
    $.ajax({ 
     type: "POST", 
     url: "misc/AddFriend.php", 
    data: { 
    mode: 'ajax', 
    friend: doConfirm ? 'confirm' : 'ignore', 
    uID : $('#uID').val(), 
    fID : $('#fID').val() 
    }, 
     success: function(msg){ 
    $('#friendsPop').jGrowl('close'); 
     } 
    }); 
} 

Однако вы могли бы хотите создать два метода доступа, которые упрощают чтение кода, и вам или другим пользователям не нужно заботиться о содержимом параметров:

function MeYouFriendConfirm() { 
    MeYouFriend(true); 
} 
function MeYouFriendIgnore() { 
    MeYouFriend(false); 
} 
+1

Это небрежный подход. doConfirm обязательно должен быть логическим в этом случае. друг: doConfirm? 'confirm': 'ignore', – Dutchie432

+0

Вы правы! Где мой рассудок? Я даже допустил большую ошибку в том, что не использовал оператор сравнения - пожалуйста, простите, я просто отредактировал этот беспорядок! – Alex

Смежные вопросы