Jquery 使用从Ajax调用返回的数据,动态内容
我尝试使用Ajax、php/Codeigniter和Javascript动态创建一些内容,方法是将表单从视图提交给获取和填充数组的控制器。idéa使用表单中的输入获取数据,并在第一个视图中创建图表(基于获取的数据),以显示在弹出式div中 我从主视图将其称为提交表格: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,
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(返回的数组)”