2015-02-06 123 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