JQuery $.post() 问题,没有执行任何操作

Posted

技术标签:

【中文标题】JQuery $.post() 问题,没有执行任何操作【英文标题】:JQuery $.post() issue, nothing is performed 【发布时间】:2015-09-04 11:18:26 【问题描述】:

我的 jQuery 函数有一个小问题,下面是代码:

function registerUser()

    var formData = $('#registerForm').serialize();
    var dataPost = $.post('classes/login.php', type:'register', data: formData ,function (data)
    
        console.log(data);
    );
;

然后我的 login.php 文件看起来像:

$type = $_POST['type'];
$email = $_POST['data']['0'];
$password = $_POST['data']['1'];

function register_user($email, $password)

 global $db;
//lets add some code to register user
    $stmt = $db->prepare("INSERT INTO user (email, password, role, banned) VALUES (:email, :password, 'level1', 'N')");
    $stmt->execute(array(':email'=> $email, ':password'=> $password));
    $rowCount  = $stmt->rowCount();
   if($rowCount > 0)
   
    // Success
    //  set session data and etc.
    return "success";
   
   else
   
    //  Failed
    return "Error, please try again!";
   

$result = register_user($email, $password);

当我执行它时,除了一个不显示任何数据且数据没有插入数据库的简单空行之外,我没有收到任何错误或任何其他信息?

【问题讨论】:

而不是返回成功只是说echo "success"; 好的,所以现在我在输入空白数据时收到“错误,请重试”,但是当我输入数据并提交时,它什么也不返回。即使我将其全部更改为回声而不是返回。 你得到了什么var_dump($_POST['data']); 这是 var_dump 返回的内容:LoginEmail=test&LoginPassword=test 这就是错误点。等等,我正在准备答案。 【参考方案1】:

您想通过表单序列化发布额外参数。

function registerUser()

    var formData = $('#registerForm').serializeArray();
    formData.push(name: 'type', value: 'register');
    var dataPost = $.post('classes/login.php', formData ,function (data)
    
        console.log(data);

    );
;

现在服务器端更新

$type = $_POST['type'];
$email = $_POST['LoginEmail'];
$password = $_POST['LoginPassword'];

function register_user($email, $password)

 global $db;
//lets add some code to register user
    $stmt = $db->prepare("INSERT INTO user (email, password, role, banned) VALUES (:email, :password, 'level1', 'N')");
    $stmt->execute(array(':email'=> $email, ':password'=> $password));
    $rowCount  = $stmt->rowCount();
   if($rowCount > 0)
   
    // Success
    //  set session data and etc.
    return "success";
  
  else
  
//  Failed
    return "Error, please try again!";
  

$result = register_user($email, $password);

参考:click here

【讨论】:

很好地解决了var_dump($_POST['data']);中的字符串问题。 好的,现在它有了正确的字符串和分解的格式!但我还是每次都失败。现在认为这与我的 PDO 声明有关。 您还验证过var_dump($_POST['data']); 吗? 是的!我验证了,这个问题已经解决了! :D 只是想弄清楚为什么它总是错误的; 已修复!它给出了关于表配置和正在发送的输入的错误! :) 非常感谢您的帮助!【参考方案2】:

你没有调用那个函数,它就在那里。你需要把

register_user($email, $password);

在 .php 页面的底部。

甚至更好:更新您的函数以返回真或假,而不是“成功”和“错误,请重试!”。然后你可以拥有以下

if(register_user($email, $password))
    echo "success";
 else 
    echo "failure";

【讨论】:

$result = register_user($email, $password);是我在页面最底部的内容 在您提供的代码中, check_login 不是一个函数。在您的问题中包含任何相关代码会很有帮助。 对不起,我的意思是 register_user() 并不想忘记它。 感谢您的建议。我改变我的功能!现在无论如何我都会返回假。根据 jaga89 与我的数据有关 看这个答案***.com/a/3817220/3112492你想在$_POST['data']上使用parse_str

以上是关于JQuery $.post() 问题,没有执行任何操作的主要内容,如果未能解决你的问题,请参考以下文章

.ajax 不会 POST,但会 GET 没有问题

jquery返回post数据

Jquery Ajax Post 中的 CORS 问题

jQuery .post() 函数不适用于 Bootstrap

我的 jquery AJAX POST 请求无需发送真实性令牌(Rails)即可工作

Flask没有从jQuery请求数据中获取任何数据