2012-05-23 31 views
-1

我用下面的代碼使用PHPPHP意想不到的JSON發送

<?php 
$host = "localhost"; 
$user = "**MASKED**"; 
$password = "**MASKED**"; 
$database = "parkfinder_zxq_coordinates"; 

$connection = mysql_connect($host, $user, $password) or die("couldn't connect to server"); 
$db = mysql_select_db($database, $connection) or die("couldn't select database."); 
//$request_parked = $_REQUEST['parked']; 
$request_long = $_REQUEST['longtitude']; 
$request_lat = $_REQUEST['latitude']; 
$q = mysql_query("SELECT * FROM Coordinates"); 
while ($e = mysql_fetch_assoc($q)) 
    $output[] = $e; 

print (json_encode($output)); 

mysql_close(); 
?> 

當我看到在Java中使用此代碼的響應來訪問我的DB:我收到

    HttpClient httpclient = new DefaultHttpClient(); 
        HttpPost httppost = new HttpPost("http://parkfinder.zxq.net/default.php"); 
        httppost.setEntity(new UrlEncodedFormEntity(coordinatesToSend)); 
        HttpResponse response = httpclient.execute(httppost); 
        HttpEntity entity = response.getEntity(); 

        String result = EntityUtils.toString(entity); 
        Log.d("RESULT", result); 
        JSONObject json_data = new JSONObject(result); 

其結果是:

2[{"longtitude":"32.32","latitude":"33.12"}] 

這將導致的JSONObject拋出異常,因爲這不是有效的JSON數據,它以2開始 有誰知道如何解決它?這兩個代碼都來自網上的教程,這似乎沒有這種問題。問題發生在兩個不同的MySQL服務器..

在此先感謝

+2

真的嗎? Java與PHP,你把* PHP *的一面?!無論如何,這裏的問題是在PHP端,你可以通過訪問這個URL看到:'http:// parkfinder.zxq.net/default.php' –

+0

肯定想從downvoter的解釋.. –

回答

2

檢查你的PHP代碼,並一定要確保你是不是你print(json_encode($output))之前呼應了「2」的地方。這是唯一可能出錯的事情。

另外,您應該確保在while循環之前聲明$output=array()。否則,如果你沒有結果行,你會得到意想不到的輸出。

+0

嗯,它是不是唯一可能是錯誤的,但它最有可能是遙不可及的。 OP-嘗試提前打印聲明,打印星號或其他內容,看它是否出現在2和方括號之間。 – Malvolio

+0

我沒有迴應任何東西,但添加$ output = array()從字符串中刪除了2 ..奇怪的,但工程!謝謝! –

+0

也必須從$ output [] = $ e中刪除[];因爲JSON必須以{開始並且它在[之前。現在效果很棒! –