如何返回ajax错误?

时间:2016-04-19 09:44:00

标签: php jquery ajax

我想在提交表单后显示ajax错误。现在结束'死' 但处理这个问题的最佳方法是什么?只需在这个php文件中用'script'标签写一些东西吗?

if($_POST['postForm'] == 'newsletter'){

    $newsletterSubscriber = new NewsletterSubscriber();
    $newsletterSubscriber->set('CMS_newsletters_id', 2);
    $newsletterSubscriber->set('created', date('Y-m-d H:i:s'));
    $newsletterSubscriber->set('firstName', $_POST['voornaam']);
    $newsletterSubscriber->set('lastName', $_POST['achternaam']);
    $newsletterSubscriber->set('companyName', $_POST['beddrijfsnaam']);
    $newsletterSubscriber->set('emailAddress', $_POST['email']);
    $newsletterSubscriber->set('subscribed', 1);
    $saved = $newsletterSubscriber->save();

    die('subscriber added');
}

我尝试了几种我找到的解决方案,但我无法让它发挥作用。

谢谢!

5 个答案:

答案 0 :(得分:2)

您需要做的就是创建一个数组并将要传递的任何参数放回到该数组中,然后使用po [self variablename]将其转换为json字符串,可以通过javascript轻松处理

json_encode()

javascript woudl就像

if($_POST['postForm'] == 'newsletter'){

    $newsletterSubscriber = new NewsletterSubscriber();
    $newsletterSubscriber->set('CMS_newsletters_id', 2);
    $newsletterSubscriber->set('created', date('Y-m-d H:i:s'));
    $newsletterSubscriber->set('firstName', $_POST['voornaam']);
    $newsletterSubscriber->set('lastName', $_POST['achternaam']);
    $newsletterSubscriber->set('companyName', $_POST['beddrijfsnaam']);
    $newsletterSubscriber->set('emailAddress', $_POST['email']);
    $newsletterSubscriber->set('subscribed', 1);
    $saved = $newsletterSubscriber->save();

    $response = array('error_code'=>0, 
                      'message'=>'subscriber added'
                     );
    echo json_encode($response);
    exit;
}

注意当您使用$.ajax({ type: "POST", url: "connection.php", data: {param1: 'aaa'}, dataType: JSON }) .done( function(data){ if(data.error_code == 0) { alert(data.message); } }); 时,浏览器会自动将返回的json字符串转换为javascript对象,以便您可以使用简单的javascript对象表示法来处理dataType:JSONdata.error_code

答案 1 :(得分:1)

你可以这样做:

if($saved) {
die('subscriber added');
} else {
echo "error";
}

在ajax中你可以检查:

$.ajax({
    type: "POST",
    url: "savedata.php",
    data: form,
    cache: false,
    success:  function(data){
        if(data == "error") {
           alert("Data has not been saved successfully. Please try again.");
           window.location.reload(true);
        }
    }
});

答案 2 :(得分:1)

您检查过jQuery Ajax API了吗?这直接来自他们的例子。 它表示您可以使用.done() .fail.always()函数

var jqxhr = $.ajax( "example.php" )
  .done(function() {
  alert( "success" );
})
.fail(function() {
  alert( "error" );
})
.always(function() {
  alert( "complete" );
});

答案 3 :(得分:1)

最佳解决方案是让您自定义json并将其发送到ajax:

而不是die尝试:

$message = array('error'=>'subscriber added');
 echo json_encode($message);

并在你身上ajax callback执行:

function(success) {
    if(success.error) {
        //do stuff
    }
//do stff
}

答案 4 :(得分:1)

使用json消息后跟错误编号:

if($saved) {
echo json_encode(array('message'=>'Successfully saved','erno'=>0));
} else {
echo json_encode(array('message'=>'Error on save','erno'=>1));
}

JS:

success:function(data) {
  if(data.erno == 1) {
   alert(data.message)
   //do other stuf here
   } else {
    alert(data.message)//if save was successful 
   }
}