我的代码存在问题,我想知道我可以在我的控制器中显示我的$_POST
,看看发生了什么:
在我的jQuery
代码中,我的ajaxCall
函数采用以下格式构建n ajaxCall(url, data_array, div_id, callback_fn)
我已经完成了console.log(data_array);
并显示了正确的数据但是在那里看到callback_fn
中发生了什么,因为它没有保存到数据库中?
由于我的所有代码都返回了200但没有错误,我已经回到question
Ajax代码:
$('body').on("click", "#product_save_youtube_btn", function (e) {
e.preventDefault();
var box = $("#product_youtube");
var id = box.data("id");
var url = box.data("url");
var data_array = {
id : id,
new_id : box.val(),
};
//console.log(data_array);
if($.trim(box.val()) != "")
{
ajaxCall(url, data_array, null, "update_product_youtube");
alert("Your You Tube ID Has Been Changed");
}
});
AjaxCall的:
function ajaxCall(url, data_array, div_id, callback_fn) {
return $.ajax({
type:'POST',
url:url,
beforeSend: function(){
$("#" + div_id).html("<img src='http://www.domain.co.nz/files/large/ajax-loader.gif' alt='Loading..' title='Loading..'/>");
},
data:data_array,
complete:function (data) {
$("#" + div_id).html(data.responseText);
if(callback_fn != null)
{
eval(callback_fn + '()');
}
}
});
}
PHP代码 - Callback_fn:
public function ajax_update_product_youtube()
{
if($_POST)
{
$id = intval($_POST['id']);
$new_id = mysqli_real_escpe_string(trim($_POST['new_id']));
if(empty($id))
{
$this->Ps_products_model->update_product_youtube($id, $new_id);
}
}
}
型号:
public function update_product_youtube($table, $id, $new_id)
{
$table = $this->_table_products;
$this->db->query("UPDATE {$table} SET youtube = ? WHERE id = ?", array($new_id, $id));
}
答案 0 :(得分:1)
如果我理解正确,您正试图查看控制器的响应。 为此,您可以执行以下操作之一:
使用hurl.it并手动发送参数以查看回复。
使用chrome dev工具/ firebug。如果是镀铬,你可以按F12 - &gt;控制台 - &gt;右键单击控制台 - &gt;选择log xmlHttpRequests。您的所有ajax请求和响应都将被记录并可查看。
答案 1 :(得分:0)
好像你在问如何调试ajax请求。你可以在这里做很多事情。首先,如果您确定服务器端发生错误,则在chrome或firefox中,您可以检查开发人员控制台中的网络选项卡。这将列出您的页面所做的所有请求以及传递的请求和响应参数。如果控制器方法抛出一个php或sql错误将作为响应返回,除非你设置php来静音所有抛出的错误。
为此,请确保您的php设置
ini_set('display_errors', 'On');
error_reporting(E_ALL);
答案 2 :(得分:-1)
如果您正在寻找快速而肮脏的调试黑客,只需var_dump
您希望在控制器/回调函数中看到的任何变量(例如,$_POST
)。