如何让JS读取PHP die抛出的代码

时间:2011-10-17 09:29:45

标签: php javascript jquery ajax

我的JS函数需要在发生故障时从PHP代码返回一定的结果。

function showResult(data) 
{
    if (data == 'save_failed') {
        document.getElementById('result').innerHTML = 'Unfortunately, we were not able to save your information. Please contact an admin.';
        return false;
    } else {
        $("#notify").clearForm().clearFields().resetForm();
        document.getElementById('result').innerHTML = 'Thank you for signing up with us.';
        return false;
    }
}

当我echo 'save_failed';出现明显错误时,这可以解决问题,但是在die语句的情况下它不起作用,例如:

mysql_connect("host", "user", "pass") or die('save_failed');

我输入了错误的主机名,但JS功能没有收到'save_failed'返回。

PHP脚本:

if (!(empty($_POST['name']) && empty($_POST['email'])))
    {
        //sanitizing inputs for MySQL insertion
        $name = mysql_real_escape_string($_POST['name']);
        $email = mysql_real_escape_string($_POST['email']);

        //connecting to db
        mysql_connect("host", "user", "pass") or die('save_failed');
        mysql_select_db("table") or die('save_failed');

        //inserting into table
        mysql_query("INSERT INTO notify (name, email) VALUES('" . $name . "', '" . $email . "' ) ") 
        or die('save_failed');  

    }
    else
    {
        echo 'save_failed';
    }

3 个答案:

答案 0 :(得分:3)

即使die("save_failed")输出“save_failed”,它也不会阻止发送脚本中的任何先前输出。

确保如果您自己转到脚本,那么您在页面源中只收到“save_failed”且没有错误的字符

答案 1 :(得分:2)

我会提出另一种处理错误的策略。

  1. 使用output buffering确保不会向客户端发送任何数据(例如,HTML文档的开头)
  2. 开始使用Exceptions。它们代表致命错误,但能够确定错误发生的确切线和参数。
  3. 浏览器尝试根据内容类型标头评估响应类型。如果您希望它显示简单文本

    标题('Content-Type:text / plain');

  4. 使用全局Exception handler,按您喜欢的方式转换邮件。
  5. 适合我!如今大多数服务器都有足够的功率来使用这些更先进的方法。

答案 2 :(得分:0)

使用die将一些信息传递给页面并不是一个好主意。通常,响应字符串中会有其他数据。

更简单的方法是在您的JS代码中嵌入PHP代码。一个例子是这样的:

<script type="text/javascript">
   data = "<?php echo('Save Failed'); ?>";
</script>