1

JSON を介して MySQL からデータを取得しています。ただし、応答が空かどうかをターゲットにしたいので、空でない場合は返された情報を表示し、そうでない場合はメッセージを表示します。

JSON応答の長さを確認する、アイテムの重大度があるかどうかを確認する、そうでない場合はnullであると想定するなど、複数の可能な解決策を試しました.

ここに私のコードのスニペットがあります:

var data = $.ajax({
    type: 'GET',
    url: 'http://www.mydomain.com/php/loaddata.php?&jsoncallback=?',
    dataType: 'JSONp',
    timeout: 5000,
    success: function(data) {
        $.each(data, function(i,item){
            if (item.Severity == 1) {   
                // Do Something
                .....

JSON がデータを見つけると、応答は次のようになります

([{"Severity":"1","Latitude":"35.872883","Longitude":"14.449133","Address":"Some Address 1","Heading":"25","Timestamp":"2012-12-28 10:15:03"},{"Severity":"2","Latitude":"35.871269","Longitude":"14.501580","Address":"Some Address 2","Heading":"80","Timestamp":"2012-12-28 10:15:31"}]);

それ以外の場合、データが見つからない場合、JSON は次を返します。

([]);
4

6 に答える 6

2

以来: Console.log が返されました"string"user1809790
これは動作するはずです:

success: function(data) {
    if (data != '' && data !== null) { // Check if the data's not an empty string or null.
        $.each(data, function(i,item){
            if (item.Severity == 1) {
                // Do Something
于 2012-12-28T10:16:54.107 に答える
0

成功時に取得するデータは JSON であるため、最初にそれを解析する必要があるため、これで十分です

var x = jQuery.parseJSON(data) // this will give you array 
if(x.length == 0) {
    alert("empty");
}
于 2012-12-28T09:52:20.870 に答える
0

式が否定されていることを確認してください。

success: function(data) {
    if(data.length != 0){
        $.each(data, function(i,item){
            if (item.Severity == 1) {
                //Do something
            }
        });
    }
}
于 2012-12-28T09:52:40.307 に答える
0

キャストを使用すると、js エンジンが解析ジョブを実行できます。

if (""+data == "")
{
alert("Data is empty");
}

注:空の文字列または空の配列(他の空の文字列/配列を再帰的に含めることができます)のみがこの条件を満たし、要件に適合します

于 2012-12-28T09:51:12.943 に答える
0

このスニペットを確認してください

var result="[]"; // this is your json string result
var parsed=jQuery.parseJSON(result); //this is now an array! so we can check the length

if(parsed.length==0)
    alert("Error")
于 2012-12-28T09:54:09.800 に答える
0

([])は有効な json ではないため、解析できません。[]は。

これにより、構文エラーがスローされます。

var json = "([])";
var obj = JSON.parse(json);
console.log(obj.length);

これが機能している間、0 が出力されます。

var json = "[]";
var obj JSON.parse(json);
console.log(obj.length);

JSFiddleはこちら - http://jsfiddle.net/m9LUm/1/

于 2012-12-28T10:10:26.680 に答える