2015-05-30 109 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,並嘗試這一點。