图片未显示在Phone Gap应用程序中



我对Phone Gap相当陌生。我对HTML和jQuery有着清晰的理解。在HTML中看似非常简单的东西,在Phone Gap中使用时却没有那么简单。

目前我正在安卓设备上测试它。

我正在尝试显示图像,这些图像是从服务器上提取的。

输出HTML

<h3>The Bass Angler</h3>
<table>
    <tr>
        <td><strong>Price: </strong>R35</td>
    </tr>
    <tr>
        <td>
            <img  style="width: 50%; height: 50%" src="http://www.adventurebuddy.co.za/uploads/cover.PNG" />
        </td>
    </tr>
</table>

jQuery

function ViewMag(id)
{
    db.transaction(function(tx) {
    tx.executeSql("select magid,name,price from mag where magid =  " + id + " order by name", [], 
       function(tx, rs){
          html = '<br /><h3>' + rs.rows.item(0).name + '</h3>';
          html += '<table><tr><td><strong>Price: </strong>R' + rs.rows.item(0).price + '</td></tr>'
          // Load editions for a magazine
          db.transaction(function(tx1){
              tx1.executeSql("select editionid,editiondate,filepath,cover from editions where deleted is null and magid = " + id, [], 
                  function(tx1,rs1){
                      if(rs1.rows.length == 0)
                          html += '<p>No editions found.</p>';
                      else
                      {               
                          //html += '<ul class="">';
                          for(ri1=0;ri1<rs1.rows.length;ri1++)
                          {
                              var coverurl = APPSERVER + '/uploads/' + rs1.rows.item(ri1).cover;
                              var file = APPSERVER + '/uploads/' + rs1.rows.item(ri1).filepath 
                              html += '<tr><td><img  style="width: 50%; height: 50%" src="' + coverurl + '" /></td></tr>'
                          }               
                          html += '</table>';
                      }
                  });
          });
          $.ui.updatePanel('#main',html);
          $.ui.setTitle(rs.rows.item(0).name);
          $.ui.loadContent('#main',false,false,"right");               
       }, 
       window.onDBError
    );
});

如果我将HTML代码保存为htm文件,它可以正常工作,但在手机上不起作用。我错过了什么?

提前感谢

您需要将域列入白名单。在这里读一读。

这说明你需要添加

<access origin="http://www.adventurebuddy.co.za" />

config.xml文件,以便告诉PhoneGap这不是特洛伊木马试图访问随机URL 的红色信号

编辑:让OP使用"破解"。

现在,您可以为img元素指定一个id

<img  style="width: 50%; height: 50%" id="image" />

然后,通过您的JavaScript(使用jQuery),您可以执行以下操作:

$.ajax({ 
    url: 'http://www.adventurebuddy.co.za/uploads/cover.PNG',
    type: "GET", 
    success: function( data ) {
        var f = $( "#image" ).attr( "src", data ); 
        console.log(f); // just to check it.
    },
    error: function( xhr, status, thrownErorr ) {
        console.log( xhr + "rn" + status + "rn" + thrownError );
    }
 });

如果不起作用,则表示您的手机正在阻止对该URL的请求,并且您需要进入设备日志

我找到了问题的解决方案。

变量html超出了函数db.transaction()的范围。我不得不重组我的函数,并最终将一些代码移到一个新函数中

jQuery

function ViewEditions(id){
    $.ui.loadContent('#editions',false,false,"right");
    db.transaction(function(tx){
        tx.executeSql("select editionid,editiondate,filepath,cover from editions where deleted is null and magid = " + id, [], 
            function(tx,rs){
                if(rs.rows.length == 0)
                    html = '<p>No editions found.</p>';
                else {               
                    html = '<ul class="list">';
                    for(ri=0;ri<rs.rows.length;ri++)
                    {
                        var coverurl = APPSERVER + '/uploads/' + rs.rows.item(ri).cover;
                        var file = APPSERVER + '/uploads/' + rs.rows.item(ri).filepath 
                        html += '<li><a href="#" onclick="downloadFile(' + file + ',' + rs.rows.item(ri).filepath + ');"><img  style="width: 50%; height: 50%" src="' + coverurl + '" /><div align="left">' + rs.rows.item(ri).editiondate + '</div></a></li>'; 
                    }               
                    html += '</ul>';
                }
            $('#editionsresults').html(html); 
        },window.onDBError
        );
    });
};

最新更新