这是我第一次使用AJAX,我正在创建一个鼓循环生成器,而不必刷新页面以创建一个新循环,我想尝试AJAX。

单击#button1时,它将运行generate.php,我试图从generate.php回显返回多个值,并将它们放在页面上的不同元素中。

不同的值是要放置在音频src中的文件url,背景图像url,循环的条数和循环的BPM。它们在php echo中用逗号分隔。

单击按钮时,我在Google开发人员工具中收到一条错误消息,提示“ jquery-1.7.1.min.js:4 GET https://whatever.com/random/undefined 404(未找到)”

按键:

<div id="button1"><div class="namething">Generate</div></div>


jQuery的

<script>
$('#button1').click(function(){
    $.ajax({
        type:'post',
        url:'generate.php',
        data: $(this).val(),
        success: function(value){
             var data = value.split(",");
            $('#fileurl').val(data[0]);
            $('body').css('background-image', 'url(' + data[1] + ')');
            $('#bars').val(data[2]);
            $('#bpm').val(data[3]);
        }
    });
  });
</script>


generate.php(它在此之前执行功能,但这是我需要返回到我的jquery和页面其余部分的唯一数据)

echo $fileurl,$imageurl,$bars,$randbpm;


我不确定,但我认为它与jQuery中的“数据:”有关,我只需要了解如何返回回显数据即可

当我单击按钮时,它正在工作并创建一个新循环,只是没有正确返回回波数据,所以我知道该路径对于generate.php是正确的

编辑:(解决方案)

感谢@Thamilan的帮助!我必须对jquery进行一些小的更改,以更新音频播放器,现在所有播放器都可以正常运行:

jQuery的

<script>
$('#button1').click(function(){
    $.ajax({
    type:'post',
    url:'generate.php',
    data: $(this).val(),
    dataType: 'json',
    success: function(data){
        var fileName = data[0];
        $("#music").attr("src",fileName).trigger("play");
        $('#timeline').css('background-image', 'url(' + data[1] + ')');
        $('#bars').text(data[2]);
        $('#bpm').text(data[3]);
    }
});
  });
</script>


PHP:

$returnArr = [$fileurl,$imageurl,$bars,$randbpm];
echo json_encode($returnArr);

最佳答案

generate.php中,将它们添加到数组中并编码为JSON并发送。在AJAX中获取JSON,然后打印出来。

使您的AJAX类似于:

$.ajax({
    type:'post',
    url:'generate.php',
    data: $(this).val(),
    dataType: 'json',          //Added this
    success: function(data){   //value to data
        $('#fileurl').val(data[0]);
        $('body').css('background-image', 'url(' + data[1] + ')');
        $('#bars').val(data[2]);
        $('#bpm').val(data[3]);
    }
});


generate.php

$returnArr = [$fileurl,$imageurl,$bars,$randbpm];
echo json_encode($returnArr);

08-08 07:06
查看更多