2016-10-17 94 views
0

在javascript中我有以下幾點:500內部服務請求的錯誤使用Ajax後,JavaScript的

var jobData = { 
      "SquareN": rectangle.getBounds().getNorthEast().lat, 
       "SquareE": rectangle.getBounds().getNorthEast().lng, 
       "SquareS": rectangle.getBounds().getSouthWest().lat, 
       "SquareW": rectangle.getBounds().getSouthWest().lng, 
       "SiteName": $("#jobname").val(), 
       "SiteType": 3, 
       "EstFlags": $("#numberFlags").val() 
      }; 
    $.ajax({ 
     url: "send_jobsite.php", 
     type: "POST", 
     data: {jobSite: jobData}, 

    }); 

然後在我的PHP文件我做$ _ POST [「現場」],但我得到一個500內部服務錯誤來自POST。我不確定錯誤的原因是什麼或如何解決它。這是我第一次嘗試做ajax post發送數據到一個php服務器腳本,然後這個腳本會把這些數據發送到mysql數據庫。

任何提示將是偉大的。

PHP的:

if($con->connect_errno) { 
    printf("Connect Failed: %s\n", $con->connect_error); 
    exit(); 
} 

echo $_POST['jobSite']; 

$con->close(); 

?> 

之前我是貼到數據庫,這是正確的連接,所以沒有包括在第一線。

+0

你可以發佈你的PHP腳本? –

+0

文件send_jobsite.php中可能存在一些錯誤,這就是爲什麼你得到內部服務器錯誤。 –

+0

與服務器端錯誤一樣, **檢查錯誤日誌** – Phil

回答

-1

似乎你的請求的工作數據是不正確的格式。我猜你正在嘗試發送JSON數據。請嘗試下面的數據。 var jobData ='{「SquareN」:「ff」,「SquareE」:「dd」,「SquareS」:「aa」,「SquareW」:「bb」,「SiteName」:「ll」,「 SiteType「:3,」EstFlags「:」nn「}';

還可以在send_jobsite.php文件中查看您正在接收的輸入數據。

+0

OP絕對似乎想通過'$ _POST'作爲典型的'application/x-www-form-urlencoded'來訪問數據,所以我不認爲使用手動創建的JSON字符串是正確的答案 – Phil

+0

改變jobData到你的建議只是嘗試,並沒有得到一個錯誤。但試圖對我的數據庫執行查詢以將數據插入到表中會導致錯誤500,因此我絕對不能這樣做。 –

0

該問題似乎與您的data格式有關。當您發送這樣的事情(你是)

data: {foo: { 
    a: "a", 
    b: "b" 
}} 

jQuery將編碼數據作爲

foo%5Ba%5D=a&foo%5Bb%5D=b 

或解碼

foo[a]=a&foo[b]=b 

可以通過PHP作爲關聯數組讀,即

$foo_a = $_POST['foo']['a']; 
$foo_b = $_POST['foo']['b']; 

很可能,您沒有正確訪問$_POST數據。你應該使用類似

$_POST['jobSite']['SquareN'] 

等。或者,你的JavaScript代碼更改爲

data: jobData, 

,並通過

$_POST['SquareN'] 

等訪問屬性。

+0

所以我有jobData作爲JSON對象,然後做數據:jobData,然後在我的PHP我做$ _POST ['SquareN']但仍然得到內部服務錯誤。我認爲這肯定是我的數據庫查詢將信息添加到數據庫。我不確定數據庫查詢的正確語法,我猜想 –

+0

@TylerDahle [沒有這樣的東西作爲JSON對象](http://benalman.com/news/2010/03/theres-no-such-thing -as-A-JSON /) – Phil

相關問題