在 CI 中,我使用 logsig() 方法设置了一个 Controller 。然后在我的 index() 方法中调用一个名为 startpage 的 View 。在我看来,我正在使用 JSON 在我的 View 和我的 Controller 之间进行异步调用。我将如何对调用进行编码。下面是我的代码:
Controller :
function logsig() {
$this->load->view('startpage', $sync);
header('Content-type:application/json'); .............
查看:
<script type="text/javascript" language="javascript">
$(document).ready(function() {
// blink script
$('#notice').blink();
$("#action_button").click(function() {
var username = $("#username").val();
var password = $("#password").val();
var dataString = '&username=' + username + '&password=' + password;
if(username=='' || password=='') {
$('#success').fadeOut(400).hide();
$('#error').fadeOut(400).show();
} else {
$.ajax({
type: "POST",
dataType: "JSON",
url: "processing/logsig.php",
data: dataString,
json: {session_state: true},
success: function(data){
if(data.session_state == true) { // true means user is logged in.
$("#main1").hide();
$('#main1').load('<?=$sync?>').fadeIn();
} else if(data.session_state == false) { // false means user is being registered.
$("#action_button").remove();
$('#success').load('<?=$sync?>');
// onLoad fadeIn
}
}
});
}
});
});
</script>
最佳答案
您不能让您的 Controller 同时加载 View 和返回 JSON。将 JSON 部分分解为一个单独的函数。
一个过度简化的例子可能是这样的:
// Your existing function, but only displaying the view
function logsig() {
$this->load->view('startpage', $sync);
}
// A new function whose sole purpose is to return JSON
// Also notice we're using CI's Output class, a handy way to return JSON.
// More info here: codeigniter.com/user_guide/libraries/output.html
function get_json() {
$this->output->set_content_type('application/json')
->set_output(json_encode(array('foo' => 'bar')));
}
然后,在您的 JavaScript 中调用 get_json
:
$.ajax({
type: "POST",
dataType: "JSON",
url: "<?php echo site_url('processing/get_json.php'); ?>",
// ... truncated for brevity ...
});
关于php - 在 CodeIgniter 中使用 jQuery JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8420312/