2014-09-15 5 views
-1

Я получаю следующий ответ от своего PHP-скрипта.Невозможно разобрать ответ в jQuery

PHP:

<?php 
$con = mysqli_connect("localhost","root","pass","products"); 

if(mysqli_connect_errno()) { 
    echo "Failed to connect database, please check with your administrator. Error is <br />" . mysqli_connect_errno(); 
} 

$cat = $_POST['cat']; 
$text = "this is from php server"; 
$json = array(); 
$html = ''; 
if ($cat == 'designer'){ 
    $query = " select * from shirts where category_1 = '$cat'"; 
    $result = mysqli_query($con, $query); 

    while ($row = mysqli_fetch_array($result)) 
    { 

     $html .= "<div class='des-result'>" . $row['code'] ."</div>"; 
    } 
} 

if ($cat == 'regular'){ 
    $query = " select * from shirts where category_2 = '$cat'"; 
    $result = mysqli_query($con, $query); 
    while ($row = mysqli_fetch_array($result)) 
    { 
     $html .= "<div class='des-result'>" . $row['code'] ."</div>"; 
    } 
} 

$json[] = array(
    'html' => $html, 
    'text' => $text 
); 

header('Content-Type: application/json'); 

echo json_encode($json); 

?> 

JQuery:

$("body").on("click",".reg", function(){ 
    $(".des-result").remove(); 
    $(".reg-result").remove(); 
    db_name = "shirts"; 
    category = "regular"; 
    var data = { 

      cat : category 
    }; 
    $.ajax ({ 
      type:"POST", 
      url:"data.php", 
      dataType: "json", 
      data: data, 
      success: function(res) { 

            $("#result").append(res.html); 
            console.log(res.text); 

            }, 
      error: function(xhr, desc, err) { 
       console.log(xhr); 
       console.log("Details: " + desc + "\nError:" + err); 
     } 
    }); 

Ниже вывод на консоль (с помощью Firebug), когда я нажимаю на DIV

[Object { html="<div class='des-result'>...es-result'>pk-004</div>", text="this is from php server"}] 

Я думал, я бы возможность доступа к текстовым и html-переменным. res.html и res.text, но он показывает undefined, если я консоль журнала его.

Пожалуйста, руководство, что я донг неправильно здесь

+0

Вы пробовали $ parseJSON? http://api.jquery.com/jquery.parsejson/ –

+0

Вы попробовали вывод res на консоль, чтобы убедиться, что вы возвращаете то, что ожидаете? –

+0

Да и я также вставил результат. Для меня это выглядит хорошо, но это первый раз, когда я работаю с JSON. – user3751873

ответ

1

Благодаря тому, как вы возвращающей массив, правильный результат будет res.0.html, так как вы делаете это многомерный массив.

$json[] = array(
    'html' => $html, 
    'text' => $text 
); 

Он должен прочитать вместо:

$json = array(
    'html' => $html, 
    'text' => $text 
); 

Тогда res.html возвратит "HTML" до тех пор, как JSON является то, что вернулся ..

+1

я также смог заставить его работать через функцию $ .each. Но я действительно хотел ваш метод. Большое спасибо, я отметю это правильно, я не знаю, почему его не позволяет мне прямо сейчас – user3751873

+0

не беспокоится, в любое время :) – skrilled

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