私は簡単な電子メールサインアップを構築しようとしています。私はこのチュートリアルを見て、私がやりたかったのと同じように見えました(http://net.tutsplus.com/tutorials/javascript-ajax/a-sleek-ajax-signup-form /)を使用してください。私はプログラミングの知識があまりないので、これは何かを稼働させている最善の策でした。私はチュートリアルに続きましたが、残念ながら、私はそれにいくつか問題があります。"jquery.jsのUncaught SyntaxError:予期しないトークン<"
私の問題は、私は開発ツールでエラーを展開すると、それは示してライン565 に、私は電子メールアドレスを提出しようとしたとき、私はjquery.jsでUncaught SyntaxError: Unexpected token <
を得ることです:私として
jQuery.extend.parseJSON jquery.js:565
$.ajax.success common.js:36
jQuery.Callbacks.fire jquery.js:1046
jQuery.Callbacks.self.fireWith jquery.js:1164
done jquery.js:7399
jQuery.ajaxTransport.send.callback jquery.js:8180
を私はこれに新人だから、助けてくれて大変感謝しています。私はしばらくの間研究してきましたが、私と同じ問題は見つかりませんでした。いくつかは似ていましたが、私が遭遇した解決策のどれかで問題を解決できませんでした。
<form id="newsletter-signup" action="?action=signup" method="post">
<fieldset>
<label for="signup-email">Sign up for email offers, news & events:</label>
<input type="text" name="signup-email" id="signup-email" />
<input type="submit" id="signup-button" value="Sign Me Up!" />
<p id="signup-response"></p>
</fieldset>
</form>
これは、サインアップJSがある:
これは、フォームのコードである
/* SIGNUP */
$('#newsletter-signup').submit(function(){
//check the form is not currently submitting
if($(this).data('formstatus') !== 'submitting'){
//setup variables
var form = $(this),
formData = form.serialize(),
formUrl = form.attr('action'),
formMethod = form.attr('method'),
responseMsg = $('#signup-response');
//add status data to form
form.data('formstatus','submitting');
//show response message - waiting
responseMsg.hide()
.addClass('response-waiting')
.text('Please Wait...')
.fadeIn(200);
//send data to server for validation
$.ajax({
url: formUrl,
type: formMethod,
data: formData,
success:function(data){
//setup variables
var responseData = jQuery.parseJSON(data),
klass = '';
//response conditional
switch(responseData.status){
case 'error':
klass = 'response-error';
break;
case 'success':
klass = 'response-success';
break;
}
//show reponse message
responseMsg.fadeOut(200,function(){
$(this).removeClass('response-waiting')
.addClass(klass)
.text(responseData.message)
.fadeIn(200,function(){
//set timeout to hide response message
setTimeout(function(){
responseMsg.fadeOut(200,function(){
$(this).removeClass(klass);
form.data('formstatus','idle');
});
},3000)
});
});
}
});
}
//prevent form from submitting
return false;
});
そして、これはPHPです:
<?php
//email signup ajax call
if($_GET['action'] == 'signup'){
mysql_connect('host','user','password');
mysql_select_db('table');
//sanitize data
$email = mysql_real_escape_string($_POST['signup-email']);
//validate email address - check if input was empty
if(empty($email)){
$status = "error";
$message = "You did not enter an email address!";
}
else if(!preg_match('/^[^\W][a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)*\@[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)*\.[a-zA-Z]{2,4}$/', $email)){ //validate email address - check if is a valid email address
$status = "error";
$message = "You have entered an invalid email address!";
}
else {
$existingSignup = mysql_query("SELECT * FROM signups WHERE signup_email_address='$email'");
if(mysql_num_rows($existingSignup) < 1){
$date = date('Y-m-d');
$time = date('H:i:s');
$insertSignup = mysql_query("INSERT INTO signups (signup_email_address, signup_date, signup_time) VALUES ('$email','$date','$time')");
if($insertSignup){ //if insert is successful
$status = "success";
$message = "You have been signed up!";
}
else { //if insert fails
$status = "error";
$message = "Ooops, Theres been a technical error!";
}
}
else { //if already signed up
$status = "error";
$message = "This email address has already been registered!";
}
}
//return json response
$data = array(
'status' => $status,
'message' => $message
);
echo json_encode($data);
exit;
}
?>
ありがとう!
更新:Shad - 「success:function(data){」の直後にそのコードを挿入しました。そのエラーと開発ツールの
Failed:
SyntaxError
arguments: Array[1]
get message: function getter() { [native code] }
get stack: function getter() { [native code] }
set message: function setter() { [native code] }
set stack: function setter() { [native code] }
type: "unexpected_token"
__proto__: Error
<br />
<b>Warning</b>: mysql_num_rows(): supplied argument is not a valid MySQL result resource in <b>/homepages/37/d403623864/htdocs/_php/launch_notify.php</b> on line <b>22</b><br />
{"status":"error","message":"Ooops, Theres been a technical error!"}
スクリーンショット:メールアドレスを提出しようとするとことをやった後、私は新しく追加されたコードの行を指して、コンソールでこれを取得します。あなたがラインの任意の拡大か何か見るために必要がある場合、私に教えてください:http://i.stack.imgur.com/IwnBr.png
UPDATE#2:聡によって提供されたコードを使用して、私は問題を考え出すにはほとんど進展したと思うが、それでもIそれを解決していない。私はそれをMySQL接続の問題に絞り込んだと思う。私はこのコードを試してみました:
<?php
mysql_connect("[DB]","[USER]","[PASS]")
or die(mysql_error());
echo "Connected to MySQL<br />";
mysql_select_db("signups")
or die(mysql_error());
echo "Connected to Database";
?>
をそして私が得る応答は次のとおりです。
Connected to MySQL
Access denied for user '[USER]'@'%' to database 'signups'
私は物事の束を試みたが、それを把握することはできません。私のホストは1 & 1で、そこにPHPMyAdminを使ってテーブルを作成しました。私は別のテーブルを試しましたが、すべて同じ問題を抱えています。ここにPHPMyAdminのテーブルを示すスクリーンショットがあります:http://i.stack.imgur.com/Oe0Fm.png
もう一度、すべての助けを借りてありがとう。それは有り難いです。
PHPページの応答はどのように見えますか? –
最初に私がお勧めするのは、エラーをキャッチすることです=)(便利な方法で:) 'try {responseData = jQuery.parseJSON(data)} catch {e} {console.log( 'Failed:'、e、data) ;} ' – Shad
Shad - 元の投稿を更新しました。ありがとう。 – user1218743