PHP文件未成功接收AJAX变量

时间:2010-02-22 07:28:36

标签: php mysql ajax

以下是我在AJAX中发生的事情:

$('#submit-button').click(function(){
    var twit = $('input#twittername').val();
    var email = $('input#email').val();
    if((email == "" || email == "you@address.com") && (twit == "" || twit == "@twittername")){
        $('p#empty-error').fadeIn();

    return false;
    }

    var datastring = 'email=' + email + '&twit=' + twit;

    if(email != "you@address.com"){
        $.ajax({
            type: 'POST',
            url: '/path/to/script1.php',
            data: datastring,
            success: function(){
                $('#signup').fadeOut('slow',function(){
                    $('#email-response').fadeIn('slow');
                });
            }
        });

        return false;
    }

    if(twit != "@twittername"){     
        $.ajax({
            type: 'POST',
            url: '/path/to/script2.php',
            data: datastring,
            success: function(){
                $('#signup').fadeOut('slow', function(){
                    $('#email-response').fadeIn('slow');
                });
            }       
        });
    }

    return false;       
});

AJAX正在返回成功函数。我可以直接导航到/path/to/script2.php,它会在我的数据库中添加一条空记录。但由于某种原因,PHP实际上并没有接收和插入AJAX变量。

之前有效,我不确定它停止了什么时候。有点奇怪的是,两个脚本都在工作,现在都没有。

脚本一是我写的,如果我直接导​​航它会插入一个空白记录:

<?php

$dbhost = 'host';
$dbuser = 'user';
$dbpass = 'pw';

$con = mysql_connect($dbhost, $dbuser, $dbpass);
if (!$con) {
    die('Could not connect: ' . mysql_error());
}

$dbname = 'databasename';
mysql_select_db($dbname, $con);

$sql = "INSERT IGNORE INTO databasename (column) VALUES ('$_POST['twit']')";

if (!mysql_query($sql)){
    die('Error: ' . mysql_error());
}

echo 'record added successfully';

mysql_close($con);

脚本二是从MailChimp修改的,如果我直接导​​航到它,这没有任何作用,这是预期的:

function storeAddress(){

    // Validation
    if(!$_POST['email']){ return "No email address provided"; } 

    if(!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$/i", $_POST['email'])) {
        return "Email address is invalid"; 
    }

    require_once('MCAPI.class.php');
    // grab an API Key from http://admin.mailchimp.com/account/api/
    $api = new MCAPI('66a7f17d87e96e439f7a2837e2963180-us1');

    // grab your List's Unique Id by going to http://admin.mailchimp.com/lists/
    // Click the "settings" link for the list - the Unique Id is at the bottom of that page. 
    $list_id = "b1ebe7c0ba";

    if($api->listSubscribe($list_id, $_POST['email'], '') === true) {
        // It worked!   
        return 'Success! Check your email to confirm sign up.';
    }else{
        // An error ocurred, return error message   
        return 'Error: ' . $api->errorMessage;
    }

}

// If being called via ajax, autorun the function
if($_POST['email']){ echo storeAddress(); }
?>

我出错的任何想法?

另外:如果有任何帮助,我可以成功提醒数据字符串。

2 个答案:

答案 0 :(得分:1)

不确定这只是一个错字,但这行不起作用:

$ sql =“INSERT IGNORE INTO databasename(column)VALUES('$ _POST ['twit']')”;

它应该是(查看POST变量的引号):

$ sql =“INSERT IGNORE INTO databasename(column)VALUES('”。$ _ POST ['twit']。“')”;

除此之外,由于安全原因,你不应该将POST变量直接放入SQL语句中(看一下SQL注入)。

答案 1 :(得分:1)

需要删除顶部“return false”。一个有趣的方式花4个小时。