0

我正在使用使用javascript等而不是其母语的icenium为移动设备编写一个应用程序(不是网络应用程序)。

该应用程序显示数据库中的行,显示事件。然后,用户单击一个显示有关该事件的更多信息的事件,但是我无法从 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

我认为问题在于发布数据

$dbId = $_POST['dbId'];

echo $_GET['jsoncallback'];

您正在一起使用 get 或 post 方法

于 2012-10-08T09:06:41.947 回答
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 回答
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 回答