【问题标题】:Error on Ajax call -> two files are sent instead of oneAjax 调用出错 -> 发送了两个文件而不是一个
【发布时间】:2016-05-27 00:25:13
【问题描述】:

我需要您帮助我完成我用于登录按钮的基本 ajax 调用。 有一个表单要填写,然后按“登录”按钮,这通常会调用一个 php 文件来检查和处理登录操作。

问题是当我尝试登录时,我发送了两个文件而不是一个。我的意思是我希望这个动作调用 login.php 文件并用一个对象发回一个回复,但是第一个请求以红色显示我的开发者控制台和另一个我不想调用的文件出现在下面第一次通话。

Here's what i see on my chrome developper console

问题肯定出在我的代码中,我一定是在我的 JS 文件或 php 中编写了一些错误的代码,所以它们是: - JS ajax 调用点击此函数

logIn(pseudo, mdp, callback) {
    var var_request = {};
    var_request['pseudo'] = pseudo;
    var_request['mdp'] = mdp;

    $.ajax({
        url: '/webservices/logIn.php',
        method: 'POST',
        data: var_request,
        timeout: kTimeout,
        success: function() {
            // callback();
            alert('good');
        },
        error: function() {
            alert('function error');
        }
    });
},

请求的php文件是

include("connexion_bdd.php");

$pseudo = $_POST["pseudo"];
$mdp    = $_POST["password"];

$req = $bdd->prepare('SELECT * FROM joueurs WHERE nickname = ?');
$req->execute(array($pseudo));

$reponse = $req->fetch();

if (!$reponse) {
    $return = array('error'=>'Pseudo non existant');
} else if ($reponse['mdp'] != $mdp) {
    $return = array('error'=>'Mauvais mot de passe');
} else {
    $return = array('error'=>'aucune erreur');
}

print(json_encode($return));

感谢大家阅读和帮助我!我想我做了坏事,但我看不到,我不是很有经验,所以如果你似乎很容易解决它,请不要感到惊讶^^

再见:)

【问题讨论】:

  • 当您在其位置运行此 javascript 代码时,您是否运行 event.preventDefault() 以停止正常提交表单
  • 我们可以看看您如何称呼logIn() 可能是表单提交的问题。
  • 我要试试这个代码@RiggsFolly,谢谢
  • 是@VinnyMannell 登录功能在我创建的Webservices 对象中。它的调用是 $('#loginSubmit').off('click'); $('#loginSubmit').on('click', function() { if ($('#pseudoC').val() == "") { alert('remplir le pseudo'); } else if ( $('#mdpC').val() == "") { alert('remplir le mdp'); } else { //参数 var pseudo = $('#pseudoC').val(); var mdp = $('#mdpC').val(); Webservices.logIn(pseudo, mdp, function(reponse) { alert(reponse); }); } });
  • @AurelCA 看起来@RiggsFolly 走上了正轨……<form></form> 看起来像什么?

标签: javascript php jquery ajax xmlhttprequest


【解决方案1】:

试试这个(将 $("#your-form") 切换到您的表单 ID):

$("#your-form").submit(function(event) {
    event.preventDefault(); //prevent form submission and do your code instead...
    if ($('#pseudoC').val() == "") {
        alert('remplir le pseudo');
    } else if ($('#mdpC').val() == "") {
        alert('remplir le mdp');
    } else {
        //Parameters
        var pseudo = $('#pseudoC').val();
        var mdp = $('#mdpC').val();

        //Faire le check bdd si le pseudo existe et s'il est bien associé à ce mdp
        Webservices.logIn(pseudo, mdp, function(reponse) {
            alert(reponse);
        });
    }
});

【讨论】:

    【解决方案2】:

    抱歉回复晚了,

    谢谢大家的回答,它现在可以工作了,我只有一个小问题:我的 ajax 调用返回的数据不是 JSON,尽管我在 php 中返回了一个 JSON

    打印(json_encode($reponse));

    我是否必须做任何其他事情才能将答案视为 JSON?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-27
      • 1970-01-01
      • 2013-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 2021-03-22
      相关资源
      最近更新 更多