AJAX成功时向PHP发送JSON对象
在我的AJAX成功时向PHP发送JSON对象,php,ajax,json,codeigniter,associative-array,Php,Ajax,Json,Codeigniter,Associative Array,在我的控制器中有一个数组$data,其var转储如下: array 'urls' => array 0 => array 'link_id' => string '1' (length=1) 'link_name' => string 'http://www.nytimes.com' (length=22) 'words' => array 0 =>
控制器中
有一个数组$data
,其var转储如下:
array
'urls' =>
array
0 =>
array
'link_id' => string '1' (length=1)
'link_name' => string 'http://www.nytimes.com' (length=22)
'words' =>
array
0 =>
array
'keyword_id' => string '1' (length=1)
'keyword' => string 'republican' (length=10)
$.ajax({
url:"http://localhost/codeigniter/SiteController3/displayData",
success: function(response){
alert(response);
$("#user_data").html(response);
},
dataType:"json"
})
阵列结构:
$data将仅具有url
和单词
,但它们可以具有多个值。两者的基数不同
然后我将其编码为echo json\u encode($data)在displayData
中编码>并将其发送到ajax<代码>显示数据
不需要POST数据。在视图中发出的ajax请求如下所示:
array
'urls' =>
array
0 =>
array
'link_id' => string '1' (length=1)
'link_name' => string 'http://www.nytimes.com' (length=22)
'words' =>
array
0 =>
array
'keyword_id' => string '1' (length=1)
'keyword' => string 'republican' (length=10)
$.ajax({
url:"http://localhost/codeigniter/SiteController3/displayData",
success: function(response){
alert(response);
$("#user_data").html(response);
},
dataType:"json"
})
- 我想访问我的“视图”中的
响应
,以便
执行json\u解码($response,true)
并获取关联数组
- 有一段代码通过以下方式以表格格式呈现此数据:
在数组上循环。在这个代码之前,我想得到
关联数组
- 我尝试使用
$.getJSON
而不是$.ajax
,但没有解决方案。阿尔索
已尝试$。每个
功能,但处于警报状态时,仅获取未定义的
。做
JSON.stringify
在警报状态下显示JSON,但无法
将其发送到PHP代码
编辑:
@碎片现实的答案
内容类型不一致的问题可以使用答案解决但是我怎样才能在我的视图的html body
中访问AJAX成功后收到的响应,该视图有一块PHP代码用于以表格格式显示数据?
解决方案:
请在下面查看我的帐户。添加
header('content-type: application/json');
到您的控制器(在echo
之前),为应用程序的响应设置正确的mime类型。最后,我放弃了JSON
方法。我在控制器的displayData
方法中添加了以下行:
$this->load->view('data_processing', $data);
php是一个新的视图
,它生成了我想要显示的HTML表。此视图的响应通过以下AJAX请求加载到我的原始视图中:
$.ajax
({
url: "http://localhost/codeigniter/SiteController3/displayData",
}).done(function(data)
{
console.log(data);
$('#user_data').html(data);
}
你的回答是什么类型的?它必须是application/json
(),否则ajax将无法正确解码它(从而使响应未定义
)。如果它是正确的mime类型,您的响应将已经由json对象生成。@fragmentedreality在Firebug下,在GET displayData
的Net选项卡中,response Headers
中的内容类型是text/html
,在请求头中是application/json
。为什么会这样?我正在控制器中执行json_编码。PHP不会自动决定发送正确的mime类型。您可以将Web服务器配置为这样做,或者手动设置预期的mime类型。如果您访问以.json结尾的文件,我会让Web服务器完成这项工作。在您的情况下,只需从控制器发送标题(请参阅)。您无法在PHP中访问该数据。AJAX是客户端的。浏览器向控制器发出请求(通过javascript)并获得响应。PHP在发送到客户端之前在服务器上进行处理。因此,您必须在成功回调中处理收到的响应。当然,您可以更改控制器以在PHP中生成正确的HTML,并将其作为响应的一部分返回(例如,response.HTML
)。但是如何在同一页面的html正文
中访问此响应?我必须将AJAX成功时收到的响应发送到html正文中的代码块
。这是我的主要问题。这取决于你的HTML。请提供更多信息。你说你有一段代码,处理你的反应。由于AJAX是从您的客户机请求的,所以您不会将这段数据返回到PHP。因此,您可以决定在控制器中指定适当的HTML,并将其作为响应发送(不太像AJAX方法),或者用javascript编写一些内容来处理接收到的json对象并在页面中填充数据。正如我在评论中所建议的:-D@fragmentedreality对这点亮了我心中的灯泡:P在我的大多数问题上,我必须完全改变我的方法!