使用Ajax发送POST请求返回未定义的成功消息

3

我正在将一些数据发布到一个PHP文件中,然后希望将其发送到数据库。 我的AJAX调用似乎很好地运行了,因为如果执行了AJAX调用,我会得到一个alert。但是,似乎我的数据没有被正确地传输。我得到了一个undefined的成功消息。我尝试设置async: true,但那并没有起作用。这是代码:

$.ajax({
    type: "POST",
    url: "sc_update_user.php",
    data: { 
        role_Id: 'my Id', 
        user_Id: 'user Id'    
    },
    success: function(data){
        alert('my message: ' + data.msg);
    }
});

<?php include_once 'includes/sessions.php';
    include_once 'includes/connect.php';

    $roleId = $_POST['role_Id'];
    $userId = $_POST['user_Id'];

    // code to insert nto db //

    echo json_encode(array('msg'=>'the message'));
?>

这个PHP只是用来测试的模型,但它应该能够正常工作,对吗?

感谢您的帮助。


执行 alert(JSON,stringify(data)),并告诉我们您在 data 中获得了什么。 - Parth Trivedi
alert(JSON.stringify(data)); 的结果是数据根本没有显示出来。 所以可能是发送数据的方式有问题? - Chris
使用 alert(JSON.stringify(data)); 没有弹出任何内容 :/ - Chris
在您的 ajax 调用中添加 "dataType" 参数并将其设置为 "json"。如果您的 php 中没有头文件,则会收到一个字符串。但首先,尝试仅使用数据生成一个警报,并测试是否获得了期望的结果,也许您会收到一个非 json 字符串。 - ElChiniNet
看看我的注释。首先尝试仅警报数据并检查是否为所需结果。然后再做其余部分。也许您的数据包含另一个带有警告或错误消息的字符串。 - ElChiniNet
显示剩余4条评论
2个回答

3

请按照以下方式更新您的代码。

$.ajax({
    type: "POST",
    url: "sc_update_user.php",
    data: { 
        role_Id: 'my Id', 
        user_Id: 'user Id'    
    },
    success: function(data){
        output = JSON.parse(data);
        console.log(output.msg); //Check console for output
    }
});

解析响应并访问对象。

希望这能帮到您。


谢谢,那个起作用了。很奇怪,我之前尝试过JSON.parse(),但它没有给我任何东西... - Chris
所以我在测试环境中尝试了这个,它可以工作。 但是当我实施它时,我得到了以下控制台日志 SyntaxError: JSON Parse error: Unexpected EOF。有人知道这是怎么回事吗?@Nikhil你的答案是正确的,但现在似乎不起作用了,因为出现了某个解析错误。 - Chris
请将 console.log(data); 的输出发送给我。 - Nikhil
这是因为返回的数据格式不正确或响应中存在一些不需要的数据。 - Nikhil
当执行 console.log(data); 时,您是否遇到了这个错误?客户端脚本中没有错误。请仔细检查您在远程文件中所做的更改,并仔细检查响应数据。 - Nikhil
显示剩余6条评论

0

你可以使用异步

function getData(){
  var output;
  $.ajax({
   type: "POST",
   url: "sc_update_user.php",
   data: { 
     role_Id: 'my Id', 
     user_Id: 'user Id'    
   },
  async: false,
  success: function(data){
    output = data;
  }
});
return outuput;
}

alert("Data: "+getData());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接