【问题标题】:Updating a page element in a php script在 php 脚本中更新页面元素
【发布时间】:2012-05-04 00:27:30
【问题描述】:

页面元素是这样定义的。

<div id="readf" class="tabbertab">
<h2>First Reading</h2>

    <div id='titlefe' class='rtitle'>

    </div>
    <div id='readfe' class='rtext'>

    </div>

</div>

我对 php 脚本进行了 ajax 调用,以向这些页面元素添加数据。

<script>
    $('#readings').ready(function(){
    $.ajax({
        url: "loadenglish.php",
        type: "GET",
        data: { },
        cache: false,
        async: true,
        success: function (response) {
            if (response != '') 
            {
                alert (response);
            }
        },
        error: function (request, status, error) {
            alert ("status "+status+" error "+error+"responseText "+request.responseText);
        },
    });    

    });
</script>

php 脚本获取数据并执行脚本回显以添加数据。

<?php
    $titlefe = 'text 1';

    $readfe = 'text 2';

    echo "<script type='text/javascript'> $('#titlefe').append('".$titlefe."');  $('#readfe').append('".$readfe."'); </script>";
?>

警报语句表明 php 脚本获取了正确的信息。但是页面元素没有更新。有没有其他方法可以将 $titlefe 添加到元素 ID titlefe

【问题讨论】:

    标签: php javascript ajax


    【解决方案1】:

    除了 MK_Dev 发布的内容之外,您还可以使用 PHP 函数 json_encode();

    <?php
    
    //loadenglish.php
    $params = array(
        'titlefe' => 'text 1',
        'readfe' => 'text 2',
    );
    
    echo json_encode($params);
    

    还有一个 jQuery 函数 $.getJSON(),它是像你一样使用 $.ajax() 函数的快捷方式。

    【讨论】:

    • 如果我将 ajax 调用更新为包含 datatype: 'json',这将有效。然后我可以使用response.titleferesponse.readfe 检索页面元素的信息。谢谢。
    【解决方案2】:

    在成功回调中发出警报后尝试eval(response);

    【讨论】:

      【解决方案3】:

      返回 javascript 方法不是一个好主意。您应该以 JSON 格式返回数据并在客户端使用 javascript 来执行实际更新。

      您的 PHP 返回语句应如下所示:

      echo "{ 'titlefe': '" + $titlefe + "', 'readfe': '" + $readfe + "' }";
      

      您的成功回调应如下所示:

      success: function(response) {
         $('#titlefe').text(response.titlefe);
         $('#readfe').text(response.readfe);
      }
      

      【讨论】:

      • 有些情况需要返回javascript。 IE、jsonp、iframe表单提交等
      【解决方案4】:

      如果您坚持返回 JavaScript,您应该使用 getScript() 而不是 Ajax get。

      【讨论】:

        猜你喜欢
        • 2013-11-15
        • 2012-09-24
        • 1970-01-01
        • 2015-10-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-12
        • 2015-01-03
        相关资源
        最近更新 更多