从Jquery向PHP传递资源对象?
我试图使用Jquery传递一个imap连接(PHPIMAP库)。这篇文章似乎不起作用——还有什么我应该试试的吗 PHP从Jquery向PHP传递资源对象?,php,jquery,Php,Jquery,我试图使用Jquery传递一个imap连接(PHPIMAP库)。这篇文章似乎不起作用——还有什么我应该试试的吗 PHP $connection = imap_open($mailServer,$login,$password); jQuery var dataString='email=<?php echo $email_address; ?>&connection=<?php echo $connection; ?>&password=<
$connection = imap_open($mailServer,$login,$password);
jQuery
var dataString='email=<?php echo $email_address; ?>&connection=<?php echo $connection; ?>&password=<?php echo $password; ?>&server=<?php echo $server;?>&daysago='+daysago+'&num='+num;
$.ajax({
type: "POST",
url: "search.php",
data: dataString,
var-dataString='email=&connection=&password=&server=&daysago='+daysago+'&num='+num;
$.ajax({
类型:“POST”,
url:“search.php”,
数据:dataString,
现在,Firebug告诉我$u POST['connection']变量是Resource id\57
编辑以添加
主要问题
我正在使用PHP imap库连接imap电子邮件地址。当我多次尝试重新连接ajax(执行多个关键字搜索)时,我往往会失去与某些电子邮件提供商的连接(主要是Hotmail),所以我试图集中一个连接,这样我就不会丢失连接-这就是为什么我想要一个连接资源并传递连接。还有其他可能的解决方案吗
我之所以使用多个ajax调用/imap连接,是因为我想让数据尽可能快地提供给用户。每次搜索通常需要8-10秒。这是因为您不应该将
&connection=
包含到URL中,因为它是一个资源,当您尝试将其回送到javascript中时,它会被删除转换为字符串:资源id#57
。您不能使用JavaScript传递PHP资源。这是因为您不应该将&connection=
包含到URL中,因为它是一个资源,当您尝试将其回显到JavaScript中时,它会转换为字符串:资源id#57
。您不能传递PHP资源使用JavaScript。$connection
是一种特殊的php“类型”被称为资源。这些资源是由诸如mysql\u connect
、fopen
和imap\u open
之类的函数创建的,代表底层C库中的某种状态。这些资源仅在页面执行期间有效。一旦PHP完成页面执行,资源就会被释放。这就是fir这是问题的一部分
第二部分是,当您打印资源时,它会转换为字符串。此字符串表示已丢失资源的基本状态,无法转换回资源。因此,无法执行您尝试执行的操作
您需要做的是在search.php中重新建立与imap服务器的连接,并从ajax调用中删除连接参数。
$connection
是一种特殊的php“类型”被称为资源。这些资源是由诸如mysql\u connect
、fopen
和imap\u open
之类的函数创建的,代表底层C库中的某种状态。这些资源仅在页面执行期间有效。一旦PHP完成页面执行,资源就会被释放。这就是fir这是问题的一部分
第二部分是,当您打印资源时,它会转换为字符串。此字符串表示已丢失资源的基本状态,无法转换回资源。因此,无法执行您尝试执行的操作
您需要做的是在search.php中重新建立与imap服务器的连接,并从ajax调用中删除连接参数。这里有两个主要问题:
\uuu toString()
方法。正如您在这里看到的,这通常会打印对象的非常通用的描述。转换对象以传递到其他地方的正确方法是使用serialize()
函数?
或&
,则很容易导致值被误解。您应该对形成的每个值运行escape
,或者执行以下操作:
var data = {
username: '<?php echo $username ?>',
password: '<?php echo $password ?>'
};
$.ajax({
type: "POST",
url: "search.php",
data: data,
...
});
var数据={
用户名:“”,
密码:“”
};
$.ajax({
类型:“POST”,
url:“search.php”,
数据:数据,
...
});
jQuery将为您获取对象并形成数据字符串,并进行适当的转义。更易于阅读、更易于组合,更不容易出错。这里有两个主要问题:
\uuu toString()
方法。正如您在这里看到的,这通常会打印对象的非常通用的描述。转换对象以传递到其他地方的正确方法是使用serialize()
函数?
或&
,则很容易导致值被误解。您应该对形成的每个值运行escape
,或者执行以下操作:
var data = {
username: '<?php echo $username ?>',
password: '<?php echo $password ?>'
};
$.ajax({
type: "POST",
url: "search.php",
data: data,
...
});
var数据={
用户名:“”,
密码:“”
};
$.ajax({
类型:“POST”,
url:“search.php”,
数据:数据,
...
});
jQuery将为您获取对象并形成数据字符串,并进行适当的转义。更易于阅读,更易于组合,更不容易出错。有没有解决方案可以将此资源发送到ajax的其他php页面?没有,您只能在php中传递这些资源。如果您尝试将其传递给JavaScript