【问题标题】:File being called by Ajax contains errorAjax 调用的文件包含错误
【发布时间】:2015-04-18 10:50:10
【问题描述】:

我有 2 个页面,流程页面和表单页面。

所以表单页面基本上由大量输入文本组成,一旦用户单击提交按钮,它就会运行 ajax 调用并调用流程页面。流程页面需要用户的凭据,例如 id 和密码。

我的ajax调用基本成功运行,但是进程页面没有运行。当没有用户登录时,流程页面将输出未定义索引消息。在这种情况下是 id 或密码,因为基本上没有数据(ID 和密码)传递到进程页面。

这是我的ajax调用函数

function postTweet(){
$.ajax({
    url : 'blablabla',
    type : 'POST',
    data : blablabla,
    success: function() {
        div1.append("Success!");
 }})
 .fail(function(data){
    console.log(data);
  });
}

所以基本上未登录用户点击提交按钮后,仍然会显示成功消息,即使进程页面中基本上没有进程运行。

我想要的是,如果进程基本上没有运行,我应该提示一个正确的消息。
有人可以帮帮我吗?

我们非常感谢您提供的任何帮助。谢谢

【问题讨论】:

    标签: javascript php jquery html ajax


    【解决方案1】:

    您的success 函数可以处理参数(查看ajax 成功here

    例如:

    PHP 文件

    <?php
    echo json_encode(array('test' => "hello world")); // echo any array data
    exit(); // Stop php from processing more, you only want the json encoded data to be echoed
    ?>
    

    Javascript 文件

    ...
    dataType: 'json', // This is needed to convert the echoed php data to a json object
    success: function (response) { // "response" will be the converted json object
        console.log(response);
    },
    ...
    

    console.log(response); 看起来像 Object {test: "hello world"}

    编辑

    在你的情况下,你可以这样做:

    <?php
    if ( ! isset($username) ) {
        echo json_encode(array('success' => FALSE, 'message' => "Username is incorrect."));
    }
    ...
    exit();
    ?>
    

    在javascript中提示上述错误信息:

    ...
    success: function (response) {
        if (response.success) {
            alert('success!');
        } else {
            alert(response.message);
        }
    },
    ...
    

    【讨论】:

    • 所以先生,只有返回任何 json 数据类型,ajax 调用才会运行?我说的对吗?
    • 如果您将 dataType 设置为 "json" 但不从 PHP 回显 json_encoded 数据(或格式错误的 json_encoded 数据),那么您将收到解析器错误。见dataType
    【解决方案2】:

    有两种方法可以处理此问题。

    1. 如果表单页面包含登录凭据输入,那么您可以在 java 脚本中验证登录凭据是否填写,然后调用 ajax 进程。
    2. 您可以使用 isset() 方法验证 ajax 文件中的登录凭据,如果未验证登录凭据,则可以向 ajax 调用发送一条关于登录失败的简单消息。

    【讨论】:

    • 所以我需要在我的进程 php 文件中调用另一个 ajax 文件先生?以及如何将新的 ajax 调用连接到以前的 ajax 调用?
    • 不,您不需要调用另一个 ajax 文件。我想说的是,您是在调用 ajax 函数之前处理登录验证,还是只是修改流程页面代码来处理登录验证。就是这样。
    • 虽然我把验证码放在了流程页里面,返回提交表单,ajax还是会被认为是成功的吧?
    • 是的,你必须把代码加上条件。如果登录则执行完整过程,否则显示登录失败消息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多