Ajax Response正在给出数据成功错误

时间:2014-07-23 15:34:07

标签: javascript php jquery ajax

我是Ajax的新手,希望通过链接到PHP脚本,在JQUERY中使用AJAX进行一些数据库交互。

        $(function() {  
          $.ajax({

                type: "POST",

                url: "response.php",
                data: {name:"amol"},
                success: function (data) {
                if (data.Success) {
                    alert('Success! We have data.Success!');
                 } else {
                    alert('Error! We do not have data.Success!');
                }
            },
            error: function(jqXHR, textStatus) {
                alert('Error: ' + textStatus);
            }          
             });

        });

我的response.php文件包含的内容不多。其中的代码是:

        <?php
         echo "Hello";
         ?>

我想将此代码用于数据库交互。但是,当我运行这么多代码时,我得到输出为&#39;错误!我们没有data.Success!

另外,我想知道,如何从成功响应的PHP脚本输出变量?

提前感谢您的帮助!!

5 个答案:

答案 0 :(得分:2)

success: function(data) {
    alert('Success! We have data - Success!');
}

将按预期工作。

您正在做的是询问您是否有一个data对象,其中Success项目的行

if (data.Success) {

data只是一个字符串,因此评估为false

success: function(data) {部分仅在您成功返回数据时才会出现

然后,您可以通过将该数据添加到div,alert或其他任何

来使用数据
 success: function(data) {
    alert(data);
}

由于data变量没有Success项,您正在返回预期的内容 - 而是返回一个字符串(想想$ string =&#34; hello&#34; - { {1}} = $ string生效!)

答案 1 :(得分:0)

试试这段代码......

$.post("response.php", {name:"anmol"},function(data){
alert(data);
});

在您的上述代码中..

<?php
         echo "Hello";
         ?>

这里你传递字符串,所以你可以使用..

如果你想传递值数组,那么就可以像这样使用

<?php
$data=array(
"name":"anmol",
"age":"21",
);

echo json_encode($data);
         ?>

    $.post("response.php", {name:"anmol"},function(data){
var json = $.parseJSON(data);
    alert(json.name);
    alert(json.age);
    });

这里只有在功能成功时才会收到警报,如果功能失败,你将无法获得任何回复

答案 2 :(得分:0)

这适用于(我刚刚测试过)您的JavaScript代码:

<?php

$json_response = array();
$json_response['Success'] = true;

header('Content-Type: application/json');
echo json_encode($json_response);

?>

问题在于您没有使用JSON对象(这是一种数据交换格式)进行响应。

答案 3 :(得分:0)

你帖子中的第一条评论是正确的,以及Graham Ritchie的解释;另外,您应该查看jQuery AJAX documentation中的示例。

此外,您应该考虑donefail,而不是successerror,因为它们在较新版本的jQuery中被认为已被弃用。他们只是更先进,但更强大。

这是一个一般的例子:

    $(function() {  
      $.ajax({
        type: "POST",
        url: "response.php",
        data: {name:"amol"}
      })
      .done(function(data) {
        // What you want to do in case of success 
        // 'data' is going to be what the URL gives you. i.e.: HTML, JSON
        // You could append the HTML to a DIV or use the JSON in some way
      })
      .fail(function(jqXHR, textStatus) {
        // What you want to do in case of error
      });
    });

我建议你查看this tutorial,特别是关于AJAX和Deferred的最后一章。

答案 4 :(得分:-4)

如果你是ajax的新手。我建议你开始使用这个狗屎

$.ajax({
        url: 'response.php',
        type: 'POST',
        dataType: 'json',
        data: {name: 'amol'},
    })
    .done(function(data) {
        if (data.Success) {
                    alert('Success! We have data.Success!');
                 } else {
                    alert('Error! We do not have data.Success!');
                }
        console.log("success");
    })
    .fail(function() {
        console.log("error");
    })
    .always(function() {
        console.log("complete");
    });