jQuery Ajax到PHP MySQL - 跨域内部服务器Erro(500)

时间:2015-05-30 11:07:51

标签: php jquery mysql ajax

我有一个jQuery ajax调用来使用php脚本更新我的数据库。

这是我的电话:

byte*

PHP更新部分:

$.ajax({
        url: "update.php",
        type: 'POST',
        dataType: 'jsonp',
        data: {key1: value1, key2: value2},
        cache: false,
        error: function() {
            $("#failUpload").removeClass("hide");
        },
        success: function(data) {
            $("#succesUpload").removeClass("hide");
                    setTimeout(function() {
                        $("#succesUpload").addClass("hide");
                    }, 5000);
        }
   });

数据库更新并且它可以工作但是在console.log中我收到以下错误消息:$key1 = $_POST["key1"]; $key2 = $_POST["key2"]; $con=mysqli_connect("localhost","username","password","dbname"); if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $sql = "UPDATE TabelName SET ". $key2 ." ='". $key1 ."' WHERE id=1"; if ($result = mysqli_query($con, $sql)) { $resultArray = array(); $tempArray = array(); while ($row = $result->fetch_object()) { $tempArray = $row; array_push($resultArray, $tempArray); } } mysqli_close($con); 当我打开它时,我发现了这个:

POST http://domainname.com/file.php?callback=jQuery2110765103816287592_1432976576289 500 (Internal Server Error)

我已经搜索过并发现了跨域调用的东西,你必须使用jsonp等,但它没有用。 THX!

4 个答案:

答案 0 :(得分:1)

使用以下功能进行错误。它将显示确切的问题。我认为这会有所帮助。

error : function(XMLHttpRequest, textStatus, errorThrown) {
                alert(XMLHttpRequest.responseText+errorThrown+textStatus);
                $("#failUpload").removeClass("hide");
        }

一切顺利。

答案 1 :(得分:1)

使用jsonp,您无法使用POST发送数据。 jQuery $ .ajax调用名称错误,因为它很混乱。使用“JSON-P”数据进行$ .ajax调用时,函数会在DOM上注入脚本(< script src =“example-domain.com/do-this-task.php?callback=my_callback_on_js>)。

这样做:

  1. 仅使用带有JSON的$​​ .ajax,但请确保您是相同的 域名,如果没有,请参阅第2点。
  2. 如果你在本地主机上而且你是 调用其他不同的域,然后你需要使用jsonp(但仅限于 适用于GET请求)或在服务器上启用CORS。看到这篇文章,因为我解释了类似你的问题: local AJAX-call to remote site works in Safari but not in other browsers

答案 2 :(得分:1)

对我来说,这个问题的答案是删除:

dataType: 'json'

我在这里找到答案:jQuery returning "parsererror" for ajax request

我还将PHP提取更改为:

if (mysqli_query($con, $sql)) {
    echo "Record updated successfully";
} else {
    echo "Error updating record: " . mysqli_error($con);
}

答案 3 :(得分:1)

$.ajax({
        url: "update.php",
        type: 'POST',
        dataType: 'jsonp',
        data: {key1: value1, key2: value2},
        cache: false,
        crossDomain: false,
        error: function() {
            $("#failUpload").removeClass("hide");
        },
        success: function(data) {
            $("#succesUpload").removeClass("hide");
                    setTimeout(function() {
                        $("#succesUpload").addClass("hide");
                    }, 5000);
        }
   });

将crossDomain:false,并尝试使用此功能。