Jquery 使用从Ajax调用返回的数据,动态内容

Jquery 使用从Ajax调用返回的数据,动态内容,jquery,ajax,codeigniter,Jquery,Ajax,Codeigniter,我尝试使用Ajax、php/Codeigniter和Javascript动态创建一些内容,方法是将表单从视图提交给获取和填充数组的控制器。idéa使用表单中的输入获取数据,并在第一个视图中创建图表(基于获取的数据),以显示在弹出式div中 我从主视图将其称为提交表格: function test() { var url = "path/to/controller/"; $.ajax({ type: "POST", url: url,

我尝试使用Ajax、php/Codeigniter和Javascript动态创建一些内容,方法是将表单从视图提交给获取和填充数组的控制器。idéa使用表单中的输入获取数据,并在第一个视图中创建图表(基于获取的数据),以显示在弹出式div中

我从主视图将其称为提交表格:

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;
}
现在,我想在第一个视图中使用填充的数组,在弹出div中进行Ajax调用,如:

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

/*…使用返回数组(fetchedData)的内容使用javascript和php制作一些图表*/
没有显示任何内容,因为我不确定如何获取阵列中的数据。这是可能的还是错误的方法?我是否应该将内容作为新视图加载到控制器中,并尝试在弹出的div中显示该内容?

php函数的“
return fetchedData
;”返回php中的数据

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

要恢复数据,您需要将
$fetchedData
转换为字符串,并回显该字符串,然后将该字符串返回到运行javascript函数的浏览器。当然,您需要解析字符串以将其转换为对象

因此,您的php必须对数据进行编码,如下所示:

$data_json = htmlentities(json_encode($data));
echo $data_json;
然后您可以将生成的json数据解析为一个对象

var data = $.parseJSON(json_data);
php函数的“
return fetchedData
;”返回php格式的数据

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

要恢复数据,您需要将
$fetchedData
转换为字符串,并回显该字符串,然后将该字符串返回到运行javascript函数的浏览器。当然,您需要解析字符串以将其转换为对象

因此,您的php必须对数据进行编码,如下所示:

$data_json = htmlentities(json_encode($data));
echo $data_json;
然后您可以将生成的json数据解析为一个对象

var data = $.parseJSON(json_data);

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

$('#test-container').html(data);
这意味着-至少-返回纯文本,尽管文本很可能也包含html标记。您需要知道数据的类型
才能使用它。还要理解,
数据
是php函数中的任何内容。返回的最常见数据类型是text/html和json

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

通过在类似PHP的语言中构造关联数组

$foo = 'fooish';
$bar = 123;
$out = array('somedata' => $foo, 'otherdata' => $bar);
然后将json编码的版本回显给客户端

echo json_encode($out);
success
data
对象如下所示

{somedata: 'fooish', otherdata: 123} 
您可以使用标准javascript表示法访问对象的属性,如
data.somedata
data.otherdata

另一方面,如果您创建一些html并从服务器回显它

echo "<div class='cool-stuff'>The value of $foo is $bar</div>";
echo“$foo的值是$bar”;
然后
data
将包含字符串“fooish的值是123”,并使用调用
$('#test container').html(数据)可能会在浏览器中生成输出。(如果存在id为“test container”的html元素,则无论如何都应该如此。)


我希望这能帮助您掌握获得所需结果的可能方法。

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

$('#test-container').html(data);
这意味着-至少-返回纯文本,尽管文本很可能也包含html标记。您需要知道数据的类型
才能使用它。还要理解,
数据
是php函数中的任何内容。返回的最常见数据类型是text/html和json

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

通过在类似PHP的语言中构造关联数组

$foo = 'fooish';
$bar = 123;
$out = array('somedata' => $foo, 'otherdata' => $bar);
然后将json编码的版本回显给客户端

echo json_encode($out);
success
data
对象如下所示

{somedata: 'fooish', otherdata: 123} 
您可以使用标准javascript表示法访问对象的属性,如
data.somedata
data.otherdata

另一方面,如果您创建一些html并从服务器回显它

echo "<div class='cool-stuff'>The value of $foo is $bar</div>";
echo“$foo的值是$bar”;
然后
data
将包含字符串“fooish的值是123”,并使用调用
$('#test container').html(数据)可能会在浏览器中生成输出。(如果存在id为“test container”的html元素,则无论如何都应该如此。)


我希望这能帮助您掌握获得所需结果的可能方法。

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