我已经编写了一些在本地运行良好的jQuery代码但是当我将它上传到我的服务器时总是不起作用。例如:在我的网站上,当你点击占位符“Antal personer”的输入字段时,我发现我的网站上的fearlessmovement.se / kalas,它应该在数据库中增加一列。在本地运行代码可以正常工作并增加数据库中的值(数据库不是本地的)。
使用ajax的jQuery代码:
function saveClick() {
antalP.click(function () {
if (clicked === false) {
//this is to only make it run once
clicked = true;
$.ajax({
url: "http://fearlessmovement.se/saveClick.php"})
.done(function (msg) {
console.log(msg);
});
}
});
}
php代码:
$con = mysqli_connect($host,$user,$pw,$db);
if (mysqli_connect_errno())
{
echo "MySQLi Connection was not established: " . mysqli_connect_error();
}
$query = "SELECT * FROM `clicks`";
$result = mysqli_query($con, $query);
$save = 0;
while ($row = mysqli_fetch_assoc($result)) {
$save = $row['click'];
echo $save;
}
$increment = $save + 1;
$query1 = "UPDATE `clicks` SET click=$increment";
$result1 = mysqli_query($con, $query1);
mysqli_close($con);
正如我前面提到的,当我在本地运行时,代码运行得很好。是我的服务器阻止了ajax请求吗?最糟糕的是,它可以工作一段时间,比如每五分钟一次。
答案 0 :(得分:2)
问题是我的.htaccess,看起来像这样:
ErrorDocument 404 http://fearlessmovement.se/404.php
Options +FollowSymLinks -MultiViews
## Turn mod_rewrite on
RewriteEngine On
RewriteBase /
## hide .php extension
## To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]
## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]
我想它与重写文件结尾有关,例如从url中删除.php会调用saveClick而不是saveClick.php。
解决方案:我在.htaccess中评论了所有内容,并且我的ajax请求有效!
感谢杰夫提示。