2009-10-16 46 views
1

我試圖使用jQuery中的$ .post對象將name:value對發送給php腳本,其中name和value都是變量。我已經將變量發送到FF中的控制檯,因此我知道它們已被正確設置,但是當我查看正在發送的頭時,只有值變量正在被正確計算,名稱將作爲變量的文字字符串發送名稱。這裏是它的全部功能:

$(document).ready(function() { 
    $('#formS form fieldset > input').blur(function() { 
    if($(this).val()=='' && $(this).prev().is('img')) { 
    $(this).prev().remove(); 
    return; 
    } 

    if((($(this).is('#formS form fieldset > input[id*=mail]')) || 
    ($(this).is('#formS form fieldset > input[id*=sername]'))) && 
    ($(this).val()!="")) { 
     var email_field = $(this); 
     if(!$(this).prev().is('img')){ 
     $('<img src="" alt="" style="width: 16px; height: 16px;" />').insertBefore(this); 
     } 
     var type = ($(this).is('input[id*=sername]'))?'username':'email'; 
     var value = $(this).val(); 
     $.post('checkemail.php5', {type:value}, function(data) { 
       if(data == "free") { 
     email_field.prev().attr('src','/images/greentick.png').attr('alt','available'); 
     } else if(data == "taken") { 
     email_field.prev().attr('src','/images/redcross.png').attr('alt','taken'); 
     } else { 
      console.log('hmmm'+data); 
     } 
     }); 
     } 
     }); 
}); 

因此,所發送的報頭是文字字符串,不管評估爲。任何人有任何想法,爲什麼?

回答

8

因爲語法{}採用一組名稱: 。值,其中名字成爲對象的屬性這是一個文字,不能是一個變量,當你看到使用這個。

var params = {}; 
params[type] = value; 

,並通過則params的不是{類型:值}

+0

非常感謝 - 完美運作。那麼,只需讓我定義$ .post函數之外的字面值,然後呢? – user97410 2009-10-16 23:45:36

+0

我可以在params中創建許多這樣的名稱值對,並將它們全部傳遞,以便像調用腳本中的php超全局數組那樣進行訪問嗎? – user97410 2009-10-16 23:46:39

+1

是的,你可以按照你想要的方式傳遞許多變量:只需將它們作爲params對象的屬性添加爲params.foo = bar或使用我已經給出的語法。 – 2009-10-16 23:48:39

0

我不知道你的問題是什麼,它不是很清楚。我也不太瞭解php,但你可能想這樣試試:

var type =($(this).is('input [id * = sername]'))?'username': '電子郵件'; var value = $(this).val(); var data = type +「=」+ value;

.post的$( 'checkemail.php5',數據功能(數據){.......

行行出狀元,

+0

我曾嘗試將兩者連接在一起,並在所需的冒號之間而不是等號,這並沒有讓它變得更好。 – user97410 2009-10-16 23:32:12

0

準確我在找Da rk獵鷹,謝謝!

很難找到這個解決方案,BTW。我假設大多數人只是序列化表單數據並將其作爲post參數發送,但在某些情況下,使用variable-name => variable-value pairing會很好,這使我瘋狂,因爲當我使用name作爲變量正在工作