Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Chuyển một mảng từ PHP sang Javascript bằng JQuery &JSON

Tôi nghĩ rằng PHP của bạn đang trả về một lỗi, chứ không phải là JSON mà bạn đang mong đợi. Vì bạn có dataType: 'json' , jQuery cố gắng phân tích cú pháp phản hồi, nhưng không thành công. Khi điều đó xảy ra, jQuery không gọi success gọi lại.

Nếu bạn có thể, hãy sử dụng Firebug để xem những gì đang được trả về bởi lệnh gọi ajax. Một cách khác là tạm thời thay đổi thành dataType: 'html' và sau đó thay đổi success của bạn gọi lại:

success: function(msg) { alert(msg); }

Hy vọng rằng khi bạn thấy thông báo được trả lại, nó sẽ giúp xác định sự cố. Tuy nhiên, một điều bạn nên làm là thêm mã để xử lý các trường hợp truy vấn không thực thi được và không có hàng nào được tìm nạp từ cơ sở dữ liệu. Bạn có thể thêm mã sau vào tệp PHP:

$result = mysql_query($query, $con);

if (!$result) {
    die('Could not run query: ' . mysql_error($con));
}

if (mysql_num_rows($result) < 1) {
    echo 'null';
    exit;
}

$data = mysql_fetch_row($result);

Tuy nhiên, cũng có một số vấn đề với lệnh gọi Ajax:

(1) Bạn đang chỉ định contentType: "application/json; charset=utf-8" , nhưng sau đó bạn không gửi JSON. Bạn nên làm như sau:

data: JSON.stringify({}),

Nhưng nếu bạn làm điều này, bạn không thể lấy dữ liệu trên máy chủ bằng $_POST hàm số. Do đó, bạn có thể muốn loại bỏ contentType cài đặt thay thế. Xem câu trả lời SO này để biết thêm thông tin.

(2) Khi bạn chỉ định dataType: 'json' , JQuery sẽ phân tích cú pháp phản hồi tới một đối tượng trước khi gọi lệnh gọi lại thành công, vì vậy msg tham số phải là một đối tượng. Do đó, bạn không nên gọi JSON.parse(msg) .

(3) Bạn đang trả về một mảng kết hợp từ tệp PHP. Điều đó sẽ được chuyển đổi thành một đối tượng JavaScript, không phải một mảng.

Tôi nghĩ bạn nên thử những cách sau:

$.ajax('refreshData.php', {
    type: 'post',
    dataType: 'json',
    data: { },
    cache: false,
    success: function (data) {
        if (data) {
            $('#interface_stats').html('Fatigue: ' + data.fatigue);
        }
    }
});



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thứ tự Lon / Lat khi sử dụng kiểu POINT không gian với MySQL

  2. Có giải pháp thay thế `kết nối bằng` trong MySQL không?

  3. Cập nhật mảng được tuần tự hóa trong mysql (mà không cần giải đáp thắc mắc?)

  4. php Mysql Nhóm và Sắp xếp các tin nhắn của người dùng với nhau

  5. Chuyển đổi truy vấn mysql lồng nhau thành kiểu codeigniter