我一直在研究这个问题,并且有很多类似的问题已被提出。我尽可能多地尝试研究并提出了应该在理论上工作的代码......但无论出于何种原因,它都没有。我似乎无法弄明白!
我正在使用JQuery / AJax来调用php文件并更新SQL记录。这是代码的一般要点。遗漏的东西本质上是一个按钮点击动作,它调用ajax函数。 Php将(最终)将StoreID值添加到数组中,将其序列化并将其添加到mysql中。
每段代码都是自己工作的,但是当它们放在一起时它就不起作用了!
Java脚本代码:
jQuery.ajax({
type: 'POST',
url: 'storeid.php',
data: {StoreID: IDjs[x] },
success: function(reponse) {
$('#error').html('Success! SkipID: ' + IDjs[x]);
onStateNext(); },
error : function(code, message){
$('#error').html('Error Code: ' + JSON.stringify(code) + ', Error Message: ' + JSON.stringify(message));}
});
关于这段代码的奇怪之处在于,“Success”函数得到了输出。显示成功回调并运行正在进行的脚本..尽管事实上它似乎并没有将StoreID变量实际发送到php文件。
PHP代码(storeid.php):
$test=$_POST['StoreID'];
if (isset($test))
{
global $conn2;
$memberid = $_SESSION['memberID'];
$testarray = array(7,8,$test);
$serialized_data = serialize($testarray);
$insertsql = "UPDATE StoreIDs SET IDs = '$serialized_data' WHERE MemberID = $memberid";
if (mysqli_query($conn2, $insertsql))
{
echo "Updated with StoreID: " . $test;
} else {
echo "Error updating record: " . mysqli_error($conn2);
}
} else {echo "no isset value"; }
此代码在没有ajax的情况下运行时也有效。当由php直接调用时它会正确更新记录,但在上面的ajax脚本调用时则不会。
我能做错的任何想法?
答案 0 :(得分:0)
感谢@JayBlanchard。您可以使用firefox开发人员工具查看服务器响应,这样可以查看错误消息并意识到它正在进行通信,但只是无法从数据库中获取凭据。
如果未包含数据库文件,则无法使用全局变量。我认为它不需要它,因为它在运行服务器端时工作正常,但由于ajax在服务器关闭数据库连接后运行客户端,因此需要再次打开它!