2016-02-12 40 views
1

我想动态创建一些内容使用Ajax,PHP/Codeigniter和Javascript提交表单从视图到获取和填充数组的控制器。 idéa将使用表单中的输入获取数据,并在第一个视图中创建图表(基于获取的数据)以显示在弹出div中。使用来自Ajax调用,动态内容返回的数据

我把这种从主视图提交表单:

function test() { 
    var url = "path/to/controller/"; 
    $.ajax({ 
     type: "POST", 
     url: url, 
     data: $("#myForm").serialize(), 
     success: function(data) { 
      $('#test-container').show(); 
      $('#test-container').html(data); 
     } 
    }); 
} 

在填充阵列控制器脚本的功能,让我们把它fetchedData;

function getSomeData() { 
    /* ..Fetching data.. */ 
    return fetchedData; 
} 

现在我想使用填充阵列在Ajax调用是从弹出取得了第一种观点格状:正在显示

<div> 
    /* ...Use the content of the returned array (fetchedData) to make some charts with javascript and php.. */ 
</div> 

没什么,因为我不确定什么这样做是为了获得数组中的数据。这是可能的还是错误的方法?我是否应该将内容作为控制器中的新视图加载,并尝试在弹出的div中显示该内容?

+0

你得到什么格式:XML,JSON?这些格式在客户端更容易使用。我不确定我们是否可以只处理“fetchedData(返回的数组)” – user3509208

回答

0

不同的数据类型可以返回到ajax请求。此代码

$('#test-container').html(data); 

意味着 - 至少是 - 正在返回纯文本,但最有可能的文本包括HTML标记了。你需要知道什么类型data将是为了利用它。也要明白,data是你的PHP功能回声。返回的最常见数据类型是text/html和json。

如果fetchedData是一个数组,那么您希望返回json,它通常在浏览器中显示为javascript对象。

通过构造在PHP关联数组等

$foo = 'fooish'; 
$bar = 123; 
$out = array('somedata' => $foo, 'otherdata' => $bar); 

然后呼应此背部的JSON编码版本到客户端

echo json_encode($out); 

successdata对象将看起来像

{somedata: 'fooish', otherdata: 123} 

您可以使用标准j avascript符号来访问像这样的对象的属性data.somedatadata.otherdata

在另一方面,如果你创建一些HTML和回声从服务器

echo "<div class='cool-stuff'>The value of $foo is $bar</div>"; 

然后data将包含字符串“fooish的值是123”,并使用呼叫$('#test-container').html(data);可能会产生回浏览器中的输出。 (无论如何,如果一个id为'test-container'的html元素存在。)

我希望这可以帮助您掌握可能的方法来获得您想要的结果。

0

return fetchedData” PHP函数返回PHP中的数据。

但是,它不会将“数据”返回到调用PHP脚本的ajax函数。

要获取数据,您需要将$fetchedData转换为字符串并回显该字符串,然后将其传递到您的JavaScript函数正在运行的浏览器。当然,您需要解析字符串以将其转换为对象。

所以你的PHP必须对数据进行编码,就像这样:

$data_json = htmlentities(json_encode($data)); 
echo $data_json; 

然后你就可以解析产生的JSON数据到一个对象;

var data = $.parseJSON(json_data);