Javascript 在不离开页面的情况下触发API url
我有一个php页面,其按钮定义如下:Javascript 在不离开页面的情况下触发API url,javascript,php,html,Javascript,Php,Html,我有一个php页面,其按钮定义如下: $id=17; echo " <a href='#' class='btn btn-xs' onclick=process($id,'99')>ON</a>"; $id=17; 回声“; 调用脚本: <iframe height='0' width='0' name='hiddenFrame' id='hiddenFrame'> </iframe> <script language=javas
$id=17;
echo " <a href='#' class='btn btn-xs' onclick=process($id,'99')>ON</a>";
$id=17;
回声“;
调用脚本:
<iframe height='0' width='0' name='hiddenFrame' id='hiddenFrame'>
</iframe>
<script language=javascript>
// Grab the device id and type and append them to the forms querystring ...
function process(id,value)
{
document.getElementById("hiddenFrame").src="http://192.168.1.90/JSON?request=controldevicebyvalue&ref=" + id +"&value=" + value;
}
</script>
//获取设备id并键入并将其附加到表单querystring。。。
函数进程(id、值)
{
document.getElementById(“hiddenFrame”).src=”http://192.168.1.90/JSON?request=controldevicebyvalue&ref=“+id+”&value=“+value;
}
其目的是使用参数调用脚本中的URL,因为它将触发API上的事件。
按钮和脚本都可以工作,但是当我点击页面按钮中的一个按钮时,它会滚动到顶部——这对于我的页面很长的移动设备来说是不必要的。
此外,我认为使用更少或更优雅的代码可以达到这个目的。它之所以会滚动到顶部,是因为
href
属性中的#
。您可以在原始JS中完成,但使用jQuery也可以。在PHP文档中,我建议将要传递的变量存储在HTML5data-
属性中。由于您需要同时传递ID和值,因此我们可以使用数据ID
和数据值
,或您需要的任何其他后缀
$id=17;
echo " <a href='#' class='btn btn-xs' data-id='$id' data-value='99'>ON</a>";
唯一的缺点是AJAX调用受限制,以防止。如果您正在对不同的域进行Ajax调用,请考虑使用.< /P>
检查浏览器中从AJAX调用接收到的HTTP头是一种很好的做法,以便执行故障排除。为什么不?使用
似乎是一个超级黑客。我同意,这是一个超级黑客-我很确定这比实际情况更困难,但我对jQuery和AJAX的了解太有限-我尝试了一些解决方案,但无法实现
$('a[data-id][data-value]').click(function(e) {
// Make AJAX call
$.ajax({
url: 'http://192.168.1.90/JSON',
type: 'GET',
data: {
request: 'controldevicebyvalue',
ref: $(this).data('id'), // Or $(this).attr('data-id')
id: $(this).data('value') // Or $(this).attr('data-value')
}
}).done(function(msg) {
// Callback for success
console.log('Success: ' + msg);
}).fail(function(msg) {
// Callback for failure
console.log('Failure: ' + msg);
});
// Prevent default action (scrolling to top)
e.preventDefault();
});