Javascript 调用MySQL存储过程的AJAX在IE中失败,但在Chrome中工作正常,调试困难
问题背景 我正在为一个基于数据库/网络的前端开发一个订阅系统,该系统将允许用户订阅对单个事件的评论通知,以及对他们选择的状态中的所有事件的评论 我为此开发了一些表,并将它们实现到我的数据库中,还有一些存储过程,用于执行各种任务添加用户、订阅用户对单个事件的评论通知、取消订阅用户对处于选定状态的所有事件的评论通知。。。你明白了吗 无论如何,在Chrome中,一切似乎都运行良好。然而,在InternetExplorer9中,处理订阅和取消订阅状态的代码似乎并不一致,尽管在Chrome中工作得很好,我不知道为什么 细节 当用户单击“管理订阅”链接时,将出现一个弹出窗口,其中包含所覆盖区域中所有状态的查询生成列表 它包括以下脚本,该脚本将必要的信息传递给ajax本身-Javascript 调用MySQL存储过程的AJAX在IE中失败,但在Chrome中工作正常,调试困难,javascript,jquery,mysql,ajax,internet-explorer,Javascript,Jquery,Mysql,Ajax,Internet Explorer,问题背景 我正在为一个基于数据库/网络的前端开发一个订阅系统,该系统将允许用户订阅对单个事件的评论通知,以及对他们选择的状态中的所有事件的评论 我为此开发了一些表,并将它们实现到我的数据库中,还有一些存储过程,用于执行各种任务添加用户、订阅用户对单个事件的评论通知、取消订阅用户对处于选定状态的所有事件的评论通知。。。你明白了吗 无论如何,在Chrome中,一切似乎都运行良好。然而,在InternetExplorer9中,处理订阅和取消订阅状态的代码似乎并不一致,尽管在Chrome中工作得很好,我
<script type='text/javascript'>
$(document).ready(function(){
$('.checkbox').change(function(){
var UserID = <?php echo json_encode($_POST['UserID']); ?>;
var State = $(this).val();
var Subscribed = $(this).prop("checked");
console.log($(this).val() + " - " + Subscribed);
$.ajax(
{
dataType: "html",
url: <?php echo "'" . $root . "updatesubscriptions.php" . "',"; ?>
type: "POST",
data:
{
UserID: UserID,
State: State,
Subscribed: Subscribed
},
complete: function(result)
{
}
});
});
});
function closeWindow()
{
close();
}
</script>
<?php
session_start();
header("Content-type: text/plain");
$connection = new mysqli('localhost', 'user', 'password', "database");
if ($_POST['Subscribed'] == "false")
{
$connection->query("CALL User_UnsubscribeFromState('" . $_POST['UserID'] . "', '" . $_POST['State'] . "');");
$connection->next_result();
}
else
{
$connection->query("CALL User_SubscribeToState('" . $_POST['UserID'] . "', '" . $_POST['State'] . "');");
$connection->next_result();
}
?>
而ajax本身-
<script type='text/javascript'>
$(document).ready(function(){
$('.checkbox').change(function(){
var UserID = <?php echo json_encode($_POST['UserID']); ?>;
var State = $(this).val();
var Subscribed = $(this).prop("checked");
console.log($(this).val() + " - " + Subscribed);
$.ajax(
{
dataType: "html",
url: <?php echo "'" . $root . "updatesubscriptions.php" . "',"; ?>
type: "POST",
data:
{
UserID: UserID,
State: State,
Subscribed: Subscribed
},
complete: function(result)
{
}
});
});
});
function closeWindow()
{
close();
}
</script>
<?php
session_start();
header("Content-type: text/plain");
$connection = new mysqli('localhost', 'user', 'password', "database");
if ($_POST['Subscribed'] == "false")
{
$connection->query("CALL User_UnsubscribeFromState('" . $_POST['UserID'] . "', '" . $_POST['State'] . "');");
$connection->next_result();
}
else
{
$connection->query("CALL User_SubscribeToState('" . $_POST['UserID'] . "', '" . $_POST['State'] . "');");
$connection->next_result();
}
?>
迄今为止试图找到解决办法
老实说,到目前为止,我还没能采取很多措施。我不知道它是如何在谷歌Chrome中如此一致地工作,而在Internet Explorer中却不工作。我尝试了console.log-in-complete:functionresult来调试它,它在Google Chrome中工作,但在Internet Explorer中似乎不工作。我不知道接下来该怎么办
我看到了在InternetExplorer中讨论的问题,但是它不是跨域的,还有其他ajax请求,例如添加注释,这些请求可以正常工作
您是否在浏览器控制台中查看了请求/响应?你在IE中看到什么不寻常的地方了吗?试着评论一下console.log。。。我发现我真的不喜欢那样。从技术上讲,在用户按下F12并打开它之前,没有控制台;在此之前,代码会出错并停止。Chrome中的控制台显示XHR已完成加载:POST。。。接着是更多的信息,但IE中的控制台似乎没有显示类似的内容。啊哈!谢谢你,rfornal-看起来错误确实是IE对console.log发出嘶嘶声-太棒了我不确定这里的礼貌是什么-我想结束这个问题,以避免人们认为它是未解决的,但我不想为rfornal的解决方案承担责任-我该怎么办?非常感谢。