PHP dosyası başarıyla AJAX değişken almıyor

2 Cevap php

İşte benim AJAX oluyor ne olduğunu:

$('#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 başarı işlevini geri dönüyor. Ve ben / path/to/script2.php doğrudan gidebilirsiniz, ve benim veritabanına boş kayıt katacak. Ama nedense, PHP aslında alırken ve AJAX değişken ekleyerek değildir.

Bu daha önce çalışıyordu, ve ben durdu hangi noktada emin değilim. Bu çalışma hem de vardı two komut olduğunu ve şimdi ne olduğunu biraz garip.

Komut biri bana tarafından yazılmış, ve ben ona doğru giderseniz boş bir kayıt ekler edildi:

<?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);

Komut iki MailChimp değiştirilmiş, ve ben beklenen, buna düz gidin, bu hiçbir şey yok:

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(); }
?>

Ben yanlış gidiyorum herhangi bir fikir?

Herhangi bir yardım ise Also: başarıyla, veri dizisi uyarabilir.

2 Cevap

Üst silmek gerekirse "return false." 4 saat geçirmek için eğlenceli bir yol.

Burada sadece bir yazım hatası olduğunu, ancak bu hat çalışmaz eğer emin değil:

$ Sql ​​= "INSERT databasename (kolon) VALUES ('$ _POST [' twit ']') INTO GÖRMEZDEN";

Bu (POST variale de tırnak bakmak) olmalıdır:

$ Sql ​​= "('. $ _POST [Twit']." 'INSERT databasename (kolon) VALUES) "INTO GÖRMEZDEN"';

Bunun yanı sıra, güvenlik nedenlerinden dolayı (SQL enjeksiyonu bir göz) için SQL deyimi doğrudan bir POST değişkeni koymak asla.