以下是我在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(); }
?>
我出错的任何想法?
另外:如果有任何帮助,我可以成功提醒数据字符串。
答案 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个小时。