私はJavaScriptを初めて使用し、数人の開発者と一緒に趣味のプロジェクトに取り組んでいます。データベースにリクエストを送信するために使用される単純なページがあります。
私はJQueryを学ぼうと決心し、このリクエストページにいくつかのAJAX機能を実装し始めました。FireFox、IE、Safariでは問題なく動作しますが、奇妙な理由でChromeでは動作しません。
私はそれを数時間デバッグしてきましたが、なぜそれが機能しないのか分かりません。HTMLフォームの関連部分は次のとおりです(JavaScriptのためにポストアクションが削除されました):
<form method="POST">
<input type="text" name="amount" value="0" size="7" />
<input type="submit" value="Fulfill!" /><br />
<input type="hidden" name="index" value="69" />
<input type="hidden" name="item" value="Iron Ore" />
</form>
そして、これが投稿先のPHPフォームです。
<?php
require_once("../classes/Database.php");
$database = new Database();
$amount = $database->sanitizeString($_POST['amount']);
$index = $database->sanitizeString($_POST['index']);
$username = $database->sanitizeString($_POST['username']);
$item = $database->sanitizeString($_POST['item']);
$database->connect();
$database->setRequest($amount, $index, $username, $item);
$database->setKarma($username, $amount, $item);
?>
そして最も重要なのは、HTMLファイルに含まれている初心者のJavaScriptコードです。
<script language="JavaScript">
var amount = 0;
var index = 0;
var item = 0;
var username = "";
var data = "";
$(document).ready(function(){
$("form input[type=submit]").click(function(){
amount = $(this).siblings("input[name=amount]").val();
index = $(this).siblings("input[name=index]").val();
item = $(this).siblings("input[name=item]").val();
username = "<?=$_SESSION['username']; ?>";
//var stuff = $.post("pages/ajaxfulfill.php", {amount:amount,index:index,item:item, username:username}, function(data){alert(data)}, "html");
var stuff = $.ajax(
{
url: "pages/ajaxfulfill.php",
type: "POST", data:"amount=" + amount + "&index=" + index + "&item=" + item + "&username=" + username,
success: function(data)
{
alert("Success")
},
error: function (XMLHttpRequest, textStatus, errorThrown)
{
alert("error" + XMLHttpRequest.status);
alert("error" + XMLHttpRequest.responseText);
}
}
)
$(this).parents("td").text("Submitted");
});
});
</script>
最初は、コメントアウトされた$ .post関数を使用していました。これは、上記のブラウザーで機能します。デバッグプロセス中に$.ajax関数に切り替えようとしましたが、FF、IE、Safariは常に「成功」アラートを返しますが、Chromeはステータス0のエラーと空白の応答を返します。
JavaScriptの初心者なので、なぜこれが失敗するのか完全に迷っています。誰かが私を正しい方向に向けることができれば、あなたは私の深い敬意と願いを持っているでしょう。ありがとう。