2014-02-16 100 views
0

我在我的代碼中遇到問題,我通過ajax調用了php,我有正確的答案(我通過一些提示測試了json answere),我的問題是當我追加數據到我的列表視圖中,即使使用「刷新」,我的列表中也沒有數據。你能幫我找到bug嗎?ajax調用jQuery Mobile到PHP

他給了我這個錯誤: 未捕獲錯誤:在初始化之前無法在列表視圖上調用方法;試圖調用方法 '刷新'

在這裏,在HTML代碼和jQuery

<script language="javascript" type="text/javascript"> 
    $(document).ready(function() { 
      $.ajax({url: "SubCategory.php", 
       dataType: "json", 
       jsonpCallback: 'successCallback', 
       async: true, 
       success: function (result) { 
        ajax.parseJSONP(result); 
       }, 
       error: function (request,error) { 
        alert('Network error has occurred please try again!'); 
       } 
      }); 
     var ajax = { 
        parseJSONP:function(result){ 
         $.each(result, function(i, row) { 
          $('#select-subCategory').append('<option value="'+row.id+'">Annuncio: '+row.name+'</option>'); 
         }); 
         $('#select-subCategory').listview('refresh'); 
        } 
       } 
}); 
</script> 
<body> 
    <form method="post" action="SubCategory.php"> 
     <select id="select-subCategory" data-native-menu="false"> 
     </select> 
    </form> 
</body> 

這是我的PHP文件

class SCategory 
{ 
    public $id; 
    public $name; 
} 
$SubCategories = array(); 
$SubCategories[0] = new SCategory; 
$SubCategories[0]->id = 0; 
$SubCategories[0]->name = 'first'; 
$SubCategories[1] = new SCategory; 
$SubCategories[1]->id = 1; 
$SubCategories[1]->name = 'second'; 
$SubCategories[2] = new SCategory; 
$SubCategories[2]->id = 2; 
$SubCategories[2]->name = 'third'; 
$SubCategories[3] = new SCategory; 
$SubCategories[3]->id = 3; 
$SubCategories[3]->name = 'fourth'; 
echo json_encode($SubCategories); 

SOLUTION

Delete 'data-native-menu="false"' from HTML, (maybe is true by default), so the select in HTML become simply

<select id="select-subCategory" ></select> 

then the listview will refresh and appear!! :)

+0

'select'不是'listview',你應該使用'.selectmenu(「refresh」)'。 – Omar

+0

我在本週末修復了這個問題,也許你是對的@Omar,我的解決方案是從HTML中刪除'data-native-menu =「false」',所以select變成

回答

0

我解決了這一問題:

刪除 '數據母語菜單= 「假」' 從HTML,(也許是默認爲true),所以在HTML選擇簡直成了

<select id="select-subCategory" ></select> 

那麼listview會刷新並出現! :)

0

您正在使用$('#select-subCategory').append(

id是selectsubCategory

而是應該用來

$('#selectsubCategory').append(
+0

對不起,它只是我的錯誤,而在這裏應付它,即使設置相同的名稱,它不起作用 –

+0

看看錯誤 –

+0

我修好了,看看解決方案:) –

0

這應該做工精細

$.each(result, function(key, row) { 
    $.each(row, function(id, name) { 
     $("<option>").val(id).text(name).appendTo($('#selectsubCategory')); 
    }); 
}); 

$('#select-subCategory').listview(); 

如果要加載你的整個列表將需要初始化它不刷新它

+0

不,它不起作用,他給我這個錯誤 未捕獲錯誤:在初始化之前無法在列表視圖上調用方法;試圖調用方法'刷新' –

+0

這個錯誤是在這一行'$('#select-subCategory')。listview('refresh');'如果你跳過它? – ponciste

+0

如果我跳過它我沒有結果,沒有錯誤,但在我看來沒有結果,刷新需要刷新我的列表... –