2015-02-06 122 views
-1

我還沒有收到以下AJAX數據:Ajax和笨 - 服務器端

$.ajax({ 
      type: "POST", 
      url: base+"tree/plant/", 
      data:{ 
       name: $('#field_treename').val(), 
       summary: $('#field_summary').val(), 
       description: $('#field_description').val(), 
       address: $('#field_url').val(), 
       category: $('#field_category').val() 
      } 
     }) 
     .done(function(resp){ 
      $('#plant-tree-inner').html(resp); 
     }); 

base是我的基本URL,tree是控制器和plant是在控制器的方法。

該URL是正確的,控制器和方法到位,正確的名稱。我通過在plant方法中迴應一個字符串來確保它的正確性,並且在AJAX響應之後,它在客戶端上正確顯示。

但是,沒有任何發佈數據似乎到達服務器。

echo $this->input->post('name');裏面的plant方法給出一個空字符串。做var_dump($_POST)給出一個空數組。我甚至嘗試給參數plant方法,但只是拋出一個missing parameter錯誤。

那麼數據迷失在哪裏,爲什麼?

編輯:我現在看到我的問題是錯誤的。它與CodeIgniter無關,因爲數據根本沒有被髮送。該字段值根據的Javascript是undefined,但肯定是存在於HTML:

<input type="text" id="field_treename" placeholder="Tree name" value="" /> 
+0

檢查開發工具中的網絡選項卡,並檢查是否發佈了發佈數據。 – 2015-02-06 18:53:15

+0

@TamásSzabó看來它沒有被髮送。標題在那裏,但是'post'是空的。任何想法爲什麼? – jovan 2015-02-06 18:56:27

+0

你有父母表嗎? – 2015-02-06 19:02:19

回答

-2

用戶這一個..

var request = "name="+$('#field_treename').val()+"&" 
     request += "summary="+$('#field_summary').val()+"&" 
     request += "description="+$('#field_description').val()+"&" 
     request += "address="+$('#field_url').val()+"&" 
     request += "category="+$('#field_category').val() 

,並設置爲data=request。這應該工作。

+0

Jquery可以序列化對象 – 2015-02-06 19:01:34

0

似乎jQuery庫有些問題。 爲了測試'清酒,try發送請求避免它。

+0

我使用由他們(不是本地)託管的jQuery庫,所以jQuery本身不成問題。 – jovan 2015-02-07 11:22:50

+0

我意識到這一點。是在問你,檢查原始的JS AJAX請求。 – Tpojka 2015-02-07 11:26:26

0

你可以試試這也..

$.ajax({ 
     type: "POST", 
     url: base+"tree/plant/", 
     data:{ 
      name: $('#field_treename').val(), 
      summary: $('#field_summary').val(), 
      description: $('#field_description').val(), 
      address: $('#field_url').val(), 
      category: $('#field_category').val() 
     } 
     success:function(resp){ 
     $('#plant-tree-inner').html(resp); 
     } 
}); 
+0

在'success:function(resp){'引發一個語法錯誤。 – jovan 2015-02-07 11:36:19

0

嘗試模擬問題中非常基本的方法,就像在本地主機或服務器這樣創建另一個目錄和創建文件,如下描述。

在index.php

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    <title>POST Sending Problem</title> 
    <script src="jquery-1.12.2.js"></script> 
    </head> 
    <body> 
    <a href="#" onclick="test(12, 'http://localhost/your_test_dir/your_phpfile.php')">Link</a> 
    <script src="custom_function.js"></script> 
    </body> 
</html> 

創建例如test.js js文件,並把這個作爲測試

function test (id, base) { 
    $.ajax({ 
    type: "POST", 
    data: { 
     'id': id 
    }, 
    url: base, 
    success: function(data) { 
     alert(data); 
    }, 
    error: function(data) { 
     alert('no data'); 
    } 
    }); 

} 

接下來,創建一個PHP文件your_phpfile.php

<?php 
if (isset($_POST['id'])) { 
    echo $_POST['id']; 
} else { 
    echo "no-result"; 
} 
?> 

這將有助於

你確定問題。如果這工作正常,請嘗試使用codeigniter應用它。

好運

+0

我遇到同樣的問題,我給你的方法幫助我確定問題 – Fil 2016-04-01 08:44:42