2011-02-27 29 views
1

在过去,我用.load()将数据加载到页面上的特定DIV中。是否可以使用jQuery打印php脚本的结果,而无需将其加载到div中?

我想运行一个PHP脚本,并在查询字符串中传递一些参数,然后在页面中输出结果。

它会这样做,我有结果的脚本我想运行该脚本,并传递它的参数,然后打印结果。

该脚本在站点的其他地方使用,并且它在查询字符串中加入参数并打印结果。

我不需要使用Javascript,如果有办法在PHP中做到这一点?但我不知道如何使用PHP来完成这项工作,并且能够将它作为查询字符串传递给参数。

while($row = mysql_fetch_array($rooms)) 
{ 
//Run the price script and print result 
print "<div id=\"price-result\">"; 
print *RESULT OF SCRIPT*; 
print "</div>"; 
} 
+3

你是什么意思,*功能被称为*?介意分享一些代码? – ifaour 2011-02-27 20:32:48

+0

是通过将异步设置为false – RobertPitt 2011-02-27 20:33:06

+0

@RobertPitt:为什么异步在这里很方便? – ifaour 2011-02-27 20:34:15

回答

0

不要依赖于jquery的一切。你在找什么是document.write()。使用.ajax获取内容然后document.write()输出它。它将在包含函数调用的脚本标记之后立即输出。

+0

问题是,调用ajax来获取内容是应该是)异步的。到它完成时,页面可能会被渲染,而'document.write()'会导致它被删除。 – Pointy 2011-02-27 20:38:21

+0

@Pointy。哎呀,没有考虑到这一点。 +1为你的答案,但为什么不只是让脚本实际指向PHP(或其他),生成一个'document.write'包含实际的内容? – Endophage 2011-02-27 20:49:01

+0

如果脚本使用了同步ajax调用,那么这种方法就行得通,但同步ajax调用通常是一个非常糟糕的主意 - 尤其是在这种情况下,它会阻止页面的其他部分的进度。 (如果这是我们所期望的,那么目前还不清楚为什么服务器不能将内容放在第一位!) – Pointy 2011-02-27 20:52:23

1

我会认为有什么需要的是一种方式,在网页中间要做到这一点:

<div> 
    Blah blah content content 
    <script src='magic.js'></script> 
    Blah blah more content 

使得脚本运行和页面上的结果是

<div> 
    Blah blah content content 
    <div class='wow-I-was-just-loaded-dynamically'> 
     Dynamic stuff blah blah 
    </div> 
    Blah blah more content 

如果真是这样的话,我觉得这样做的唯一方法是让脚本做这样的事情:

document.write("<div id='magic'></div>"); 

,然后启动相应的异步调用加载内容:

setTimeout(function() { 
     $('#magic').load(url, function() { ... }); 
    }, 5); 

(我不是100%肯定会需要超时工作要做;这取决于DOM是否被document.write()调用立即正确更新。)

+0

我*怀疑*这不是他想要的......让我们等待他的回应。 – ifaour 2011-02-27 20:48:35

+0

我不知道 - 这个问题的直接答案是,我敢肯定,“不”。 – Pointy 2011-02-27 20:49:39

+0

你不需要超时,一个元素在其HTML解析(或document.written)后立即可用, – 2011-08-17 19:17:54

0

您需要在等式中的某个占位符。您可以使用选择器和append方法将某些内容添加到DOM元素。它可以通过ID,班级或标签。

$(document).ready(function() { 
    $.ajax({ 
     ... 
     success: function(data) { $("#some_id").append(data); } 
      // OR to append to the body $("body").append(data) 
    }); 
}); 

<table> 
    ... 
    <tr> 
     <td id="some_id">Some stuff</td> 
    </tr> 
</table> 

全部取决于您希望它出现在哪里。您可以将.html和.append与您喜欢的任何选择器结合使用。

相关问题