2015-05-30 108 views
0

我有一个jQuery ajax调用来更新我的数据库使用PHP脚本。jQuery Ajax到PHP MySQL - 跨域内部服务器错误(500)

这是呼叫我做:

$.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); 
     } 
    }); 

PHP更新部分:

$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); 

的数据库更新和它的作品,但在执行console.log我收到此错误信息:POST http://domainname.com/file.php?callback=jQuery2110765103816287592_1432976576289 500 (Internal Server Error) 当我打开这个我找到这个:

_.ajaxTransport.Y.cors.a.crossDomain.send @ jquery.js:26 

我al准备搜索并找到关于跨域调用的东西,你必须使用jsonp等,但它没有成功。谢谢!

+0

您是否有使用JSONP进行本地请求的特定原因?尝试使用'dataType:'json''。尽管这似乎是多余的,因为您的PHP代码似乎没有在响应中返回任何数据。 –

+0

你有没有关闭你的ajax? – Saty

+0

我开始与json,但这给了我同样的错误...然后,我发现了跨域ajax后,其中说,使用jsonp,但同样的错误... –

回答

1

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

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

一切顺利。

1

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

这样做:

  1. 只能使用$阿贾克斯用JSON,但保证你在同一 域,如果没有,看到2点
  2. 如果你是在本地主机上,你 通话其他不同的域名,那么你需要使用jsonp(但只有 适用于GET请求)或者在服务器上启用CORS。查看这篇文章是因为我解释了类似于你的问题: local AJAX-call to remote site works in Safari but not in other browsers
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); 
} 
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,并尝试这一点。