2012-04-30 33 views
0

這是我的JavaScript視圖和控制器正在調用。 的JavaScript在控制器中形成發佈變量

$('#contact').submit(function(e){ 
e.preventDefault(); 
var name= $('input[name=contactname]').val(); 
var email= $('input[name=contactemail]').val(); 
var message= $('textarea[name=message]').val(); 
$.post("index.php/homepage/sendMail",{name:name, email:email, message:message}, 
function(){ 
    $('#contactUsMask').hide(); 
    $('#contactAckMask').show(); 
    }); 
}); 

控制器

$from = $_POST['email']; 
$msg = $_POST['message']; 
$name = $_POST['name']; 

$config['protocol'] = 'sendmail'; 
$config['mailpath'] = '/usr/sbin/sendmail'; 
$config['mailtype'] = 'html'; 
$config['charset'] = 'iso-8859-1'; 
$config['wordwrap'] = TRUE; 

$this->email->initialize($config); 
$this->email->from($from, $name); 
$this->email->to($to); 
$this->email->subject($sub); 
$this->email->message($msg); 
if($this->email->send()) 
{ 
    return true; 
} 
else 
{ 
    echo $this->email->print_debugger(); 
    return false; 
} 

我不能夠閱讀帖子的變量,請幫助。 一切努力讚賞

+1

什麼呢'的var_dump($ _ POST);'輸出? – adrien

+0

如果您使用CI,您應該使用輸入類,因爲它包含了安全方面的好處。要獲取發佈數據,請使用$ this-> input-> post()而不是全局post數組。不過,如果全局post數組爲空,我懷疑你的問題是JavaScript(看起來像jquery)。 – musoNic80

+0

你也可以將發送的對象賦值給var'var postData = {name:name,email:email,message:message};'並用'console.log(postData);'進行檢查,你真的在​​發送任何東西。你也可以在「網絡」選項卡的brwoser中(通常)發送什麼內容,並且完成發送的操作。 – Eugene

回答

-1

如果你這樣做是跨站點,您遇到跨站點的問題,因爲.POST是$就

+0

該網址似乎是相對的。 – mmarinero

0

嘗試使用$("#testform").serialize()在您的文章要求如

$('#contact').submit(function(e){ 
e.preventDefault(); 
$.post("index.php/homepage/sendMail",$("#contact").serialize(), 
function(){ 
    $('#contactUsMask').hide(); 
    $('#contactAckMask').show(); 
    }); 
}); 
包裝

和控制器,你將不得不使用$this->input->post('email');獲得的電子郵件值.. 和他們說嘗試做var_dump($_POST)

+0

那你爲什麼離開了所有的變量呢?在這種情況下只需要防止通話和發帖。 – Eugene

+0

@Eugene這是正確的,我剛剛編輯的代碼.. – zaherg