PHP脚本没有运行内部函数

时间:2013-01-11 17:58:46

标签: php javascript html

我有PHP脚本工作,直到我在Javascript函数中移动它。可以不这样做吗?

//Javascript
function displayPlace() 
{

//PHP
    <?php
    $place = mysql_query("select * from tblRestaurants order by RestName ASC");

    while ($nt= mysql_fetch_assoc($place))
    $arrData[] = $nt;
    if(isset($_GET["ajax"]))
     {
    echo json_encode($arrData);
    die();
     }
    ?>  

//Javascript
    $.getJSON("index.php?ajax=true", function(data) {
        $.each(data, function(index, objRecord) {
            var option=document.createElement("option");
            option.value=objRecord.RestID;
            option.text=objRecord.RestName;
            $("#Doggie").append('<option value="' + objRecord.RestID + '">' + objRecord.RestName     + '</option>');

2 个答案:

答案 0 :(得分:1)

虽然PHP的这个片段可能与你放入它的Javascript函数有关,因为你把它放在代码的深处,它没有返回正确的响应。

你的目标是当你调用$.getJSON()时,PHP将返回一个JSON编码的字符串...但是因为你将PHP代码放在你的页面中,所以不相关的文本字符(包括function displayPlace(){它之前的所有内容都在JSON之前被内联返回,这让人感到困惑$.getJSON()

将PHP代码段放在代码顶部以避免此问题。或者甚至更好,创建一个单独的json.php页面来处理JSON请求。

<小时/> 编辑以澄清:
不要把PHP放在那里。它不属于那里。

将PHP代码放在Javascript函数中 not 会导致在调用Javascript函数时执行该代码。当请求页面时,PHP在服务器上运行,一旦页面被提供,它就会停止*。
当您调用JSON函数时,您再次请求该页面,因此PHP将执行并返回整个页面,直到它到达该片段。您将拥有一堆HTML和Javascript,然后然后一个JSON字符串,而不是返回有效的JSON字符串。此响应无效 无论你在哪里使用PHP代码段(当它工作时)都是合适的。更容易维护的做法是将与返回JSON相关的所有PHP代码移动到名为json.php的文件,然后从$.getJSON()而不是index.php请求文件

答案 1 :(得分:0)

我猜你正在点击die()退出整个脚本。之后没有javascript会被发送到浏览器,因为php说“此页面已完成,不输出任何其他内容”。脚本的其余部分将停止。删除它,它应该有所帮助。