加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Greasemonkey AJAX请求不发送数据?

发布时间:2020-12-13 17:18:13 所属栏目:PHP教程 来源:网络整理
导读:我正在用Greasemonkey的GM_xmlhttpRequest()发出一个GET请求: $(".getReview").click(function(){ var videoId = $(this).parents("li").find("a").attr("href"); alert(videoId); GM_xmlhttpRequest({ method: "GET",url: "http://www.amitpatil.me/demos/
我正在用Greasemonkey的GM_xmlhttpRequest()发出一个GET请求:

$(".getReview").click(function(){
    var videoId = $(this).parents("li").find("a").attr("href");
    alert(videoId);
    GM_xmlhttpRequest({
      method: "GET",url: "http://www.amitpatil.me/demos/ytube.php",data: "username=johndoe&password=xyz123",headers: {
        "User-Agent": "Mozilla/5.0",// If not specified,navigator.userAgent will be used.
        "Accept": "text/xml"            // If not specified,browser defaults will be used.
      },onload: function(response) {
          console.log(response);
      }
    });

这是服务器代码ytube.php:

<?php
  print_r($_REQUEST);
  print_r($_GET);
  echo "Hello friends".$_GET['vid'];
?>

$_REQUEST =>返回一些与WordPress相关的数据.
$_GET =>返回一个空白数组.

我无法弄清楚出了什么问题.我甚至尝试过POST方法.

解决方法

data参数仅适用于POST方法.如果您希望使用GET请求发送数据,请将其附加到URL:

GM_xmlhttpRequest ( {
    method: "GET",url:    "http://www.amitpatil.me/demos/ytube.php?username=johndoe&password=xyz123",// Use no data: argument with a GET request.
    ... ...
} );

但出于各种原因,最好通过POST发送数据.为此,您需要指定编码:

GM_xmlhttpRequest ( {
    method: "POST",url:    "http://www.amitpatil.me/demos/ytube.php",data:   "username=johndoe&password=xyz123",headers: {
        "Content-Type": "application/x-www-form-urlencoded","User-Agent": "Mozilla/5.0",browser defaults will be used.
    },... ...
} );

如果要发送大量数据或复杂数据,请使用JSON:

var ajaxDataObj = {
    u: username,p: password,vidInfo: [123,"LOLcats Terrorize City!","Five stars"]
};

var serializedData  = JSON.stringify (ajaxDataObj);

GM_xmlhttpRequest ( {
    method: "POST",data:   serializedData,headers: {
        "Content-Type": "application/json",... ...
} );

您的PHP会像这样访问它:

$jsonData   = json_decode($HTTP_RAW_POST_DATA);

更新:
Greasemonkey和Tampermonkey现在要求您在元数据块中使用set @grant GM_xmlhttpRequest.一定要这样做.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读