Ajax返回奇怪的额外HTML

时间:2014-10-10 19:46:43

标签: php jquery html ajax

我有几个HTML内容片段,可以根据世界地图的当前选定区域加载到页面上。这是请求的样子:

    jQuery('#vmap').vectorMap({
        map: 'world_en',
        backgroundColor: '#fff',
        // more map config options...
        onRegionClick: function(element, code, region)
        {
            //Post request
            $.ajax('/get_post_data.php', {
                data: {region: region},
                dataType: 'html',
                success: function(response) {
                    $("#post").html(response);
                }
            });
        }  
    });

这是get_post_data.php:

$result = '';

  // Swtich based on region
  switch($_REQUEST['region']) {
    //Asia
    case 'China':
    case 'Japan':
        $result = @include('includes/asia.inc.php');
      break;

    //Africa
    case 'Ethiopia':
    case 'Kenya':
        $result = @include('includes/africa.inc.php');
      break;

  echo $result;

inc.php文件如下所示:

<h2>Asia</h2>
<p>The article for Asia region</p>

当AJAX运行时,相应的HTML会被发布到页面,但该段落包含在我没有在任何地方写过的额外h2标签中,它会发布&#34; 1&#34;作为p标签后的字符串。这是响应后标记的样子:

<div id="post">
    <h2>Asia</h2>
        <h2>
            <p>The article for Asia region</p>
            "1"
        </h2>
</div>

我不知道为什么这两个额外的东西被添加到我想要的标记中。当我在控制台中查看响应时,我看到了正确的HTML,仍然添加了&#34; 1&#34;,但没有h2标签。

2 个答案:

答案 0 :(得分:3)

因为您未能正确关闭h2中的inc.php标记

应该是

<h2>Asia</h2>

答案 1 :(得分:1)

您正在使用json_encode($ result);这就是你所展示的,可能会发生奇怪的事情。

尝试echo $ result;