我的页面上有几个对象,我遍历这些对象并发出 ajax 请求来请求打开或关闭状态。它们是由 Homeseer 自动化软件控制的灯。
使用萤火虫,我可以看到所有正在制作的内容以及返回的响应。当我按下一个灯时,我会检查所有灯的状态,以防灯的状态发生变化。大约第三次单击后,我可以看到所有请求都在发出,但没有回复。
Jquery 将 url 传递给 PHP 脚本,该脚本进行调用并将数据返回给 jquery,这绕过了跨域安全性。
我可以打开另一个选项卡并将 url post 语句复制到地址中,页面显示响应。
当我完成我的请求后,我是否没有关闭某些东西/为什么在第三次点击后发出请求但没有回复???
这是我的代码
function X10Check(){
//This Ajax checks the current on/off status of the passed X10 code
$('div.lightchk').each(function(i, obj) {
$x10Device = $(this).data("x10");
var element = $(this);
var data = "url=http://192.168.0.34:81/tenHsServer/tenHsServer.aspx?t=ab&f=DeviceStatus&d=" + $x10Device ;
$.ajax({
url:"urlencode.php",
data: data,
type: "POST",
success: function(data)
{
myd = $('<span />').html(data).find("#Result").text();
var Nmyd = myd.charAt(3);
if (Nmyd ==':')Nmyd = myd.charAt(4);
if (Nmyd == '2'){element.removeClass('off').addClass('on')}else{element.removeClass('on').addClass('off')};
},
error: function (request, status, error)
{
// alert(request.responseText);
}
});
});
};
它在这里进行 php 调用是使用 php 脚本的 php 调用允许我绕过跨域安全问题。
<?php
//set POST variables
$url = $_POST['url'];
unset($_POST['url']);
$fields_string = "";
//url-ify the data for the POST
foreach($_POST as $key=>$value) {
$fields_string .= $key.'='.urlencode($value).'&';
}
rtrim($fields_string,"&");
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
$url .= '&';
$url .= $fields_string;
curl_setopt($ch,CURLOPT_URL,$url);
//execute post
$string = curl_exec($ch);
curl_exec($ch);
curl_close($ch);
?>