2010-08-13 69 views
1

我正在使用ajax調用做一個小的計算,然後返回值並將其顯示在提交表單的頁面中。在Firebug中它表示它調用該函數,但沒有得到響應。 (我有一個寫入數據庫的類似表單,工作正常,似乎是因爲它不需要響應 - 螢火蟲表示它也未能在該腳本上得到響應。)奇怪的是,我在我的本地服務器,然後在網站上實施,一切按計劃進行。我在本地服務器和Web服務器上都使用了Code Igniter,但我不知道這是否與它有關。無論如何,任何幫助將是偉大的。我稍微有點新,所以在這個時候這已經超出了我的境界。.ajax帖子和獲取本地服務器的響應,沒有響應的網頁主機

感謝

編輯:.js文件

$(document).ready(function() { 

    $('#submit').click(function(){ 

    var formdata = { 
     years: $('#years').val(), 
     rate: $('#rate').val(), 
     principle: $('#principle').val(), 
     periods: $('#periods').val(), 
     continuous: $('#continuous').val() 
     } 

    $.ajax({ 
     url: "http://localhost:8888/CodeIgniter_1.7.2/index.php/timevalueshow/submit", 
     type: 'POST', 
     data: formdata, 
     success: function(data){ 
       $('#replace').replaceWith('<p>'+data+'</p>');      
     } 
    }); 

    return false; 
}); 


}); 

PHP提交功能

function submit(){ 

    $years = $this->input->post('years'); 
    $rate = $this->input->post('rate'); 
    $principle = $this->input->post('principle'); 
    $periods = $this->input->post('periods'); 
    $isCont = $this->input->post('continuous'); 

    $params = array(
     'years' => $years, 
     'rate' => $rate, 
     'principle' => $principle, 
     'periods' => $periods, 
     'isCont' => $isCont 
    ); 

    $this->load->library('timevalue', $params); 

    return $this->timevalue->FVFactor(); 
} 
+0

我們可以看到一些代碼,你也試圖從本地到遠程或反之亦然? – Robert 2010-08-13 22:43:31

+0

@Robert有代碼。我試圖將數據發送到託管我的站點的服務器,然後返回數據。 – tshauck 2010-08-13 23:38:45

回答

0

難道該請求正在取得跨域?請記住,mydomain.com被視爲與www.mydomain.com不同的域名。

最近我遇到了類似的情況。我向mydomain.com請求了一個頁面,它向www.mydomain.com上的腳本發出了一個AJAX請求。該請求並未作出,因爲它被認爲是跨域的。它與您描述的症狀相同。在Firebug和Chrome開發者控制檯中,我看到一個空的響應,沒有錯誤消息。

問題是CodeIgniter根據$config['base_url']設置生成絕對URL。如果您使用與$config['base_url']中配置的不同域名訪問該站點,則可能會遇到此類問題。

+0

如何解決這些問題? – 2011-12-02 18:38:44

0

這部作品的開發,而不是在服務器上,因爲你在呼喚本地主機

// this will have the client call itself on this particular page (wont work) 
url: "http://localhost:8888/CodeIgniter_1.7.2/index.php/timevalueshow/submit", 

上述代碼應該只是:

// this is relative to the document ROOT, will work on server but not on dev! 
// you can set it relative to the calling page using ../ as needed 
url: "/index.php/timevalueshow/submit", 
+0

嗨,我不小心複製了本地文件而不是服務器上的文件。對函數的調用通過,沒有任何迴應。 – tshauck 2010-08-13 23:57:41

+0

@tshauck我總是試圖殺死節拍是讓服務器**總是**回顯一些東西,所以你可以肯定的是,如果函數正在運行**它正在輸出一些東西**。如果你可以的話,我也會有一個'error_log('函數運行');'在PHP上,以確保。請做到這一點,並讓我們知道,即使返回的東西,你仍然沒有得到答案。 THKS! – Frankie 2010-08-14 00:07:40

+0

嗨,所以我試了一下,沒有收到任何錯誤信息,但是我不確定是否正確設置了它,所以我在函數內部運行了一個郵件(),以便在發送郵件時向我發送郵件。 – tshauck 2010-08-14 00:30:50