2015-07-05 5 views
-1

Это моя ошибка:Pure JSON? Ошибка: значение <бр типа java.lang.String не могут быть преобразованы в JSONObject

07-05 23:27:47.883: E/log_tag(2657): connection success 
07-05 23:27:47.890: E/log_tag(2657): Error parsing data <br /> 
07-05 23:27:47.890: E/log_tag(2657): <font size='1'><table class='xdebug-error xe-fatal-error' dir='ltr' border='1' cellspacing='0' cellpadding='1'> 

07-05 23:27:47.890: E/log_tag(2657): <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>(!)</span> Fatal error: Call to a member function prepare() on a non-object in C:\wamp\www\sample\insertOrders.php on line <i>23</i></th></tr> 
07-05 23:27:47.890: E/log_tag(2657): <tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr> 
07-05 23:27:47.890: E/log_tag(2657): <tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr> 
07-05 23:27:47.890: E/log_tag(2657): <tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0010</td><td bgcolor='#eeeeec' align='right'>245224</td><td bgcolor='#eeeeec'>{main}()</td><td title='C:\wamp\www\sample\insertOrders.php' bgcolor='#eeeeec'>..\insertOrders.php<b>:</b>0</td></tr> 
07-05 23:27:47.890: E/log_tag(2657): </table></font> 
07-05 23:27:47.890: E/log_tag(2657): org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONObject 

Это мой PHP код

$con=mysqli_connect($host, $username, $password)or die("cannot connect"); 
mysqli_select_db($con,$db_name)or die("cannot select DB"); 

if (!empty($_POST)) { 
//initial query 
$query = "INSERT INTO orders (TableNum, MenuID) VALUES (:table, :menuid) "; 

//Update query 
$query_params = array(
    ':table' => $_POST['TableNum'], 
    ':menuid' => $_POST['MenuID'] 
); 

//execute query 
try { 
    $stmt = $db_name->prepare($query); 
    $result = $stmt->execute($query_params); 
} 
catch (PDOException $ex) { 
    $response["success"] = 0; 
    $response["message"] = "Database Error. Couldn't add post!"; 
    die(json_encode($response)); 
} 
    $response["success"] = 1; 
    $response["message"] = "Username Successfully Added!"; 
    die(json_encode($response));} 

Я много читал о эта ошибка. Я разбираю блок HTML, а не чистый JSON. Я действительно не могу определить, что на самом деле является чистым JSON, поэтому мне нужен кто-то, чтобы указать его мне на PHP-код, который у меня есть.

+0

[Это JSON.] (Http://json.org/) Вы разбор HTML. –

+0

^Это не настоящая причина. У вас есть ошибка базы данных, отображаемая в HTML - поэтому исправьте ошибку. Hmm, должен '$ db_name' в' prepare() 'call be' $ con'? Я предполагаю, что имя базы данных является строкой, а не объектом. – halfer

+1

Вы должны разместить больше своего php-кода. В сообщении об ошибке указано, что вы вызываете 'prepare' на не-объект в строке 23' insertOrders.php'. Похоже, что ошибка errormessage добавлена ​​к вашему '$ response', и поэтому' json_encode' не работает – jhinzmann

ответ

2

Реальная ошибка в том, что эта строка:

$stmt = $db_name->prepare($query); 

должно быть:

$stmt = $con->prepare($query); 

$db_name это просто строка, а $con ваше действительное соединение MySQLi, которое вы можете использовать для подготовки запросов. Ошибка json просто обернута вокруг фактического исключения, которое бросается и отображается xdebug.

+0

Ошибка теперь в строке 24 – LevLevinstine

+0

@LevLevinstine: обычно указывается, какой код на самом деле _is_ в указанной вами строке. В этом случае новая проблема возникает в вашей строке 'execute()', что означает, что ваш 'prepare()' не удалось. Проверьте свой запрос. – halfer

+0

@halfer $ result = $ stmt-> execute ($ query_params); – LevLevinstine

0

Json - это формат обмена данными. Вы можете узнать больше об этом здесь www.json.org

Ваш PHP-код возвратил ошибку в html, json parser не обрабатывал его. Json parser (что бы вы ни использовали) не справится с этим.

jsfiddle.net/chzx0hw2/ 

Предварительный просмотр, что было возвращено.

0

Вы можете попытаться не поместить json_encode() в die()?

обратно в тот же день, когда я синтаксический анализ массива JSON, я использую такой формат

$array = array("flag" => 0, "response" => "success"); 
    json_encode($array); 
+0

Я уже исправил свою ошибку. Я просто обращу внимание на это. Благодаря! – LevLevinstine

+0

хороший друг – Rheii

Смежные вопросы