0

母国語ではなくjavascriptなどを使用するiceniumを使用して、モバイルデバイス用のアプリ(Webアプリではない)を作成しています。

アプリはデータベースからの行を表示し、イベントを表示します。次に、ユーザーはイベントに関する詳細情報を表示するイベントをクリックしますが、以下のようにjs関数からajaxを呼び出すのに問題があります。

function showSingle(itemId){

            //document.write(itemId);
            $('#output').fadeOut();
            $('#single').fadeIn("fast");
            $.ajax({
                url: 'http://dev.123456789.co.uk/getSingle.php',
                dataType: 'jsonp',
                data: { dbId: itemId },
                jsonp: 'jsoncallback',
                timeout: 5000,
                success: function(data, status){

                        var linkedPageSingle = '<h2>'+item.eventName+'</h2>'
                            + '<p>Description: '+item.description+'</p><p>Type: '
                            + item.type+'</p><p id="pageid">'+item.id+'</p>';

                        $('#single').append(linkedPageSingle);
                        // pageId = $('#pageid').html();
                        $('#single').text('debugdebug.');
                },
                error: function(){
                    $('#single').text('There was an error loading the data.');
                }
        });
      }

これはデータを返しません。$('#single')。text('debugdebug。');も返しません。それで、ajax呼び出しに問題があるに違いありませんか?また

error: function(){
                    $('#single').text('There was an error loading the data.');
                }

出力されません。これでエラーを見つけることができますか?関数の呼び出しは次のとおりです。

var linkedPage = '<h2><a href="#" onClick="showSingle('+item.id+')">'+item.eventName+'</a></h2>'
                            + '<p>Description: '+item.description+'</p><p>Type: '
                            + item.type+'</p><p id="pageid">'+item.id+'</p>';

これは、ページのdocument.readyセクションのajaxメソッド内にあります(これは機能します)。

getSingle.php:

<?php

/*
    * Script to connect to database and pull out information for app!
*/

include 'connect.php';

$dbId = $_POST['dbId'];
$query = mysql_query("SELECT * FROM calTest where `id`='$dbId'");
$records = array();

while($row = mysql_fetch_assoc($query)) {
    $records[] = $row;
}

echo $_GET['jsoncallback'] . '(' . json_encode($records) . ');';

?>

どこが間違っているのかわからない、ありがとう!

4

3 に答える 3

1

コールバックをに設定したjsoncallbackので、アイテムを解析するためにその関数を追加する必要があります。

function showSingle(itemId){

        //document.write(itemId);
        //$('#output').fadeOut();
        //$('#single').fadeIn("fast");
        $.ajax({
            url: 'http://dev.thedesignworks.co.uk/getSingle.php',
            dataType: 'jsonp',
            data: { dbId: itemId },
            jsonp: 'jsoncallback',
            timeout: 5000
        });
}

function jsoncallback(data, status) {
    var linkedPageSingle;
    $.each(data, function(i, item) {
         linkedPageSingle = '<h2>'+item.eventName+'</h2>'
                        + '<p>Description: '+item.description+'</p><p>Type: '
                        + item.type+'</p><p id="pageid">'+item.id+'</p>';

         $('#single').append(linkedPageSingle);
         // pageId = $('#pageid').html();
    });​
    $('#single').text('debugdebug.');
}
于 2012-10-08T08:56:56.153 に答える
1

問題はデータの投稿にあると思います

$dbId = $_POST['dbId'];

echo $_GET['jsoncallback'];

getまたはpostメソッドを一緒に使用しています

于 2012-10-08T09:06:41.947 に答える
0

これを試して

function showSingle(itemId){

            //document.write(itemId);
            $('#output').fadeOut();
            $('#single').fadeIn("fast");
            $.ajax({
                url: 'http://dev.thedesignworks.co.uk/getSingle.php',
                dataType: 'jsonp',
                data: { dbId: itemId },
                timeout: 5000,
                success: function(data, status){
                        alert(data)
if (data.length > 0) {
                        var linkedPageSingle = '<h2>'+item.eventName+'</h2>'
                            + '<p>Description: '+item.description+'</p><p>Type: '
                            + item.type+'</p><p id="pageid">'+item.id+'</p>';

                        $('#single').append(linkedPageSingle);
                        // pageId = $('#pageid').html();
                        $('#single').text('debugdebug.');
}
                },
                error: function(){
                    $('#single').text('There was an error loading the data.');
                }
        });
      }

phpページは

    <?php

    /*
        * Script to connect to database and pull out information for app!
    */

    include 'connect.php';

    $dbId = $_POST['dbId'];
    $query = mysql_query("SELECT * FROM calTest where `id`='$dbId'");
    $records = array();

    while($row = mysql_fetch_assoc($query)) {
        $records[] = $row;
    }

if (count($records) > 0)
    echo json_encode($records);


    ?>
于 2012-10-08T09:13:47.890 に答える