2011-07-19 48 views
2

我问了关于PHP打破的问题。 我需要停止执行php进程线程,而JavaScript执行获取变量值操作(代码由php生成)。打破php进程获取js变量

例子:

<?php 

print get("prompt('put your name here');"); 

// this will generate $.ajax(... data: { 'return':prompt('put your name') } ...) 


?> 

PHP函数'得到'必须打印javascript代码(返回标题和内容),但不停止PHP的执行。他必须从浏览器看功能的结果。 (通过ajax返回)。

如何我可以停止PHP执行与TEMPORARY输出并返回查询结果后PHP代码完成。 或...建议我解决这个问题。

(我需要得到同步提示对话框结果)

谢谢!

+1

这不是PHP的工作原理。 PHP是一种文本输出语言。它没有意识到浏览器执行它发送的代码。您不能等待JavaScript调用完成。 –

+0

我需要另一种方式来做到这一点=) – xercool

+0

这是一个猜测,但如果你只是想捕获用户的名字,将其注入到DOM(即HTML)某处并打印页面,则应该输出页面通过PHP并在JavaScript中处理其余部分。 (这就是它的目的。) –

回答

5

这不是它的工作方式 - 您需要处理输出到JavaScript的输出和通过Ajax的响应,作为PHP中的两个单独请求。

即:的一般方案如下:

  1. PHP输出包含JavaScript有关HTML等本PHP脚本的执行在该点结束。

  2. 客户端JavaScript执行所需的处理,并对服务器上的PHP脚本执行AJAX调用。这可以是相同的PHP脚本(您可以通过$_GET$_POST变量切换提供的页面“模式”),也可以完全是不同的PHP页面。然而,从PHP的角度来看,这是一个完全不同的脚本调用。

要记住的关键一点是,HTTP是无状态的本质,所以你需要确保你通过所有的PHP脚本需要在AJAX请求的相关信息。

此外,理想情况下,您应该确保已针对停用JavaScript的用户设置了备用系统,尽管这些日子在某种程度上已经在一定程度上下降了。

+0

这非常intresting .. – xercool

+0

但我需要锁定打印和传递获取(在第一次)。在第二次执行打印(它如何自动化)? – xercool

+0

但它有任何问题。如果开始'fwrite'操作...写入将被执行两次!如果使'if..else'语句(通过GET或POST)我必须声明所有情况。但我需要做一个函数与执行需要代码...我需要得到(得到(得到(...))) - 嵌套变体也是...我认为这个问题有任何方法...努力,但最优 – xercool