有时候,你可能有这样的需求,我们的A程序在处理客户端的请求时,想要以用户的身份给我们的B程序发送一个请求,但是又不想等待它的请求结果,有什么样的方法来解决这样的情景呢?
这时候,我们必须以socket的方式来建立一个链接,然后把我们的请求数据以Get或者Post的方式传递过去,而无须等待它的响应结果。这个类似于Ajax请求,不会阻塞当前A程序的执行。
下面就以Post方式的例子来讲解一下。
<?php $tmp = ''; $cookie = ''; $postfield = array ('title' => $title, 'type' => 'help', 'select_circle_id' => $item->circle_id, 'act' => 'addshare', 'artcle_comment' => $content ); $tmp = http_build_query($postfield); foreach ( $_COOKIE as $key => $value ) { //如果想以用户的身份给B程序发送请求,必须传递Cookie过去,这样才能获取Session $cookie .= "$key=".urlencode($value)."; "; } //去掉末尾的;号 $cookie = substr($cookie,0,-1); //有一点必须明白,如果当前连接没有建立成功,程序会在这里阻塞的 $socket = fsockopen ( $_SERVER ['SERVER_NAME'], 80, $errno, $errstr, 30 ); //我们的B程序的URL地址 $request = "POST /personal/personal_center.php HTTP/1.1\r\n"; $request .= "Cookie: $cookie\r\n";//回车换行符必须在双引号里面 $request .= 'Host: ' . $_SERVER ['SERVER_NAME'] . "\r\n"; $request .= "Content-type: application/x-www-form-urlencoded\r\n"; $request .= "Content-length: " . strlen($tmp) . "\r\n"; $request .= "Accept: */*\r\n"; $request .= "Connection: Keep-Alive\r\n\r\n";//注意这里是2个回车换行符,标志着请求头的结束 $request .= "$tmp\r\n\r\n";//Post数据后也要有2个回车换行符 fwrite ( $socket, $request ); fclose ( $socket ); //OK,我们已经向B程序成功发送了一个请求,B程序会执行给定的任务。但我们不必理会,继续执行当前A程序 //A程序的任务…… ?>
原文链接:http://woqilin.blogspot.com/2012/05/blog-post_4234.html
相关推荐
以下是一个基本的Ajax请求示例: ```javascript // 创建XMLHttpRequest对象 var xhr = new XMLHttpRequest(); // 设置回调函数处理响应 xhr.onreadystatechange = function() { if (xhr.readyState === ...
一直以为AJAX跨域是无法逾越的鸿沟,最近发现原来在服务端可以通过发送header信息来允许AJAX跨域请求。 PHP代码示例: 代码如下: header(‘Access-Control-Allow-Origin:*’); header(‘Access-Control-Allow-...
在JavaScript中,使用XMLHttpRequest对象发送AJAX请求。首先创建一个对象实例: ```javascript var xhr = new XMLHttpRequest(); xhr.open('GET', 'http://localhost/socket_server.php', true); ``` #### 3.2 ...
客户端的jQuery代码可能包含AJAX请求的触发事件,如按钮点击,以及`$.ajax()`调用,设置URL、请求类型和数据格式。 **6. 服务端源码解析** 服务器端源码通常会处理来自客户端的请求,读取请求参数,执行相应操作,...
JSON(JavaScript Object ...本文将通过实例演示了jQuery通过Ajax向PHP服务端发送请求并返回JSON数据。阅读本文的读者应该具备jQuery、Ajax、PHP相关知识,并能熟练运用。 XHTML <li><a>张三</a></li> <li
在Web开发中,有时我们想要在用户关闭页面的时候执行一些操作,比如发送一个Ajax请求到服务器进行数据上报或者完成某些清理工作。为了实现这个功能,我们可以利用浏览器提供的事件监听机制,特别是`beforeunload`和`...
外部JavaScript文件`fun.js`中定义了`historyLotteryCode_1()`函数,该函数利用jQuery库发起一个AJAX请求。请求类型为POST,目标URL是`ajaxReturn.php`,并传递了一个名为`userid`的数据参数。 当服务器响应返回后...
然而,有时我们需要在发送Ajax请求后取消它,比如用户在请求处理完成前执行了其他操作。本文将深入探讨如何在jQuery中使用xhr对象的`.abort()`方法来取消Ajax请求。 首先,jQuery的$.ajax()函数是创建Ajax请求的...
在这个例子中,JavaScript主要负责监听用户的行为(如鼠标悬停和点击),并通过Ajax调用PHP服务端接口,改变地图的颜色,显示相关信息。 具体到这个“地图小例子”,我们可以推测其工作流程如下: - 当用户将鼠标...
2. **使用PHP处理Ajax请求**:提供一个完整的 PHP 脚本示例,演示如何解析 Ajax 请求发送的数据,并返回相应的结果。 3. **使用JSP处理Ajax请求**:类似地,也会有 JSP 示例代码,说明如何利用 JSP 处理 Ajax 请求...
4. **服务器接口**:PHP编写的服务端接口应具有接收AJAX请求、解析请求参数、执行查询操作、处理查询结果、封装成JSON或XML格式并返回给前端的功能。 5. **数据库交互**:虽然描述中未明确提及,但若系统需要记录...
3. PHP:PHP是一种服务端脚本语言,常用于Web开发,可以处理来自客户端(如Ajax请求)的数据。在这个项目中,PHP脚本接收并验证Ajax发送的评论数据,可能包括防止SQL注入的安全检查。验证成功后,PHP将评论数据存储...
一个简单高效的库通过PHP实现了HTML5的服务器发送的事件,用于将事件从服务器实时推送到客户端,并且比Websocket更容易,而不是AJAX请求。 要求 PHP 5.4或更高版本 通过Composer( )安装 composer require " hhxsv5...
4. AJAX请求:发送请求到PHP服务端,获取数据。 5. 数据处理:前端接收到数据后,解析JSON,动态更新市、县(区)的下拉菜单选项。 6. 测试和优化:确保在不同浏览器和设备上功能正常,优化加载速度和用户体验。 在...
2. **设置HTTP头信息**:在发起Ajax请求之前,可以通过JavaScript设置XMLHttpRequest对象的HTTP头信息,告诉浏览器不要缓存该请求。可以设置`"If-Modified-Since"`为`"0"`或`"Cache-Control"`为`"no-cache"`,如下:...
服务器端通常使用像PHP这样的服务器端脚本语言来处理AJAX请求。在上面的PHP示例代码中,演示了如何通过$_GET全局数组接收客户端发送的数据,并进行简单的逻辑处理。然后根据处理结果,输出对应的响应。在这个例子中...
使用DataTable默认的ajax交互功能,对传给后台和从后台获取的数据都有命名格式要求,这样一来耦合度较高,不利于后期扩展,不能直接适用于需要跟多种不同前端或其他业务交互的项目。本例子主要展示了自行封装请求...