很抱歉,如果这是基本的,但我一直在处理整天搞清楚这一点,并且已经到了我可以用Jquery和cakephp完成所需的一切(不确定cakephp是否与此相关或者与任何PHP相同) ),我想从cakephp函数返回一个变量到jquery,我已经读过如何做到这一点,就像这里:
cakephp:
$test[ 'mytest'] = $test;
echo json_encode($test);
和jquery:
$.ajax({
type: 'POST',
url: 'http://localhost/site1/utilities/ajax_component_call_handler',
data: {
component_function: component_function,
param_array: param_array
},
dataType: "json",
success: function(data) {
// how do i get back the JSON variables?
}
});
我只是无法弄清楚如何在jquery中将一个或多个变量恢复为可用的形式,我只想要变量,所以我可以用它做任何其他事情,我一直在看我能通过搜索找到什么但它并没有让我完全清楚..感谢您的任何建议。
答案 0 :(得分:2)
JSON变量位于data
变量中。在你的情况下,它看起来像这样:
var data = {
myTest: "Whatever you wrote here"
};
...所以你可以从data.myTest
阅读。
(不确定它是否相关,但您可以从网址中删除http://localhost/
部分;
无论如何,AJAX都不允许跨域请求。)
答案 1 :(得分:1)
您的变量在数据中。
$.ajax({
type: 'POST',
url: 'http://localhost/site1/utilities/ajax_component_call_handler',
data: {
component_function: component_function,
param_array: param_array
},
dataType: "json",
success: function(data) {
// how do i get back the JSON variables?
var values = eval( data ); //if you 100 % trust to your sources.
}
});
答案 2 :(得分:0)
基本上数据变量包含json字符串。要解析它并将其再次转换为JSON,您必须执行以下操作:
$.ajax({
type: 'POST',
url: 'http://localhost/site1/utilities/ajax_component_call_handler',
data: {
component_function: component_function,
param_array: param_array
},
dataType: "json",
success: function(data) {
json = $.parseJSON(data);
alert(json.mytest);
}
我没有测试它,但它应该以这种方式工作。
答案 3 :(得分:0)
请注意,当您指定dataType“json”或使用$。getJSON(而不是$。ajax)时,jQuery会自动应用$。parseJSON。
因此,在“success”回调中,您不需要再次使用parseJSON解析响应:
success: function(data) {
alert(data.mytest);
}
答案 4 :(得分:0)
如果将JSON变量返回给视图文件,您可以使用javascript helper:
实用程序控制器中的:
function ajax_component_call_handler() {
$this->layout = 'ajax';
if( $this->RequestHandler->isAjax()) {
$foobar = array('Foo' => array('Bar'));
$this->set('data', $foobar);
}
}
在您的视图/ utilities / ajax_component_call_handler.ctp中,您可以使用:
if( isset($data) ) {
$javascript->object($data); //converts PHP var to JSON
}
所以,当你到达你的功能阶段时:
success: function(data) {
console.log(data); //it will be a JSON object.
}
在这种情况下,您将变量类型处理与控制器和视图逻辑分开(如果您需要其他东西,那么JSON会怎样)...