JqueryAjax。使用 tampermonkey 发送 post 和来自输入的值
Jquery Ajax. Sending post with values from inputs with tampermonkey
我编写了这段代码,它可以正常工作,因为我可以在控制台中看到日志。我有一个小问题,因为我无法通过 AJAX post.
将值发送到我的服务器
jQ(document).on("keyup", "form input", function () {
var value = jQ(this).val();
console.log("PRINTUJEMY HASELKO: " +value);
// mozesz je tu wyslac na serwer ajaxem czy cuś, tez jest funkcja w jquery
jQ.ajax({
type : "POST",
url : "http://result.php",
data : data,
success : function(data){
alert(data);
var json = $.parseJSON(data);
}
});
})
.keyup();
}
我可以看到这个错误:
"Uncaught ReferenceError: data is not defined"
我的 PHP 文件:
<?php
if( $_REQUEST["value"] ){
$name = $_REQUEST['value'];
echo "Welcome ". $value;
}
?>
您的 data
属性 应该是:
data: { value : value },
发生引用错误是因为您的数据存储在 value
而不是 data
。您还试图将其作为原始 POST 数据发送(没有任何密钥),并且由于您的服务器端正在寻找 value
密钥,您应该像上面那样传递一个对象。
旁注:您将无法 $.parseJSON()
当前响应数据,因为字符串 Welcome x
无效 JSON,但您应该会看到警报在那之前。
jQ.ajax({
type: "POST",
url: "http://result.php",
data: value,
success: function(data){
alert(data);
var json = $.parseJSON(data);
}
});
更新:
由于您正在编写 tampermonkey 脚本,因此不应使用 jQuery ajax 来请求您的外部 url,而应使用 GM_xmlhttpRequest(详细信息)。
jQuery 无法否决同源策略,这意味着,您只能使用 jQuery 向本地文件系统发送 ajax 请求(这在某种程度上毫无意义)。
然而,GM_xmlhttpRequest 没有 same-origin 边界。正是为这种场景而生。
查看文档以获取更深入的信息:http://wiki.greasespot.net/GM_xmlhttpRequest
这是一个示例解决方案 GM_xmlhttpRequest 和示例用户脚本 header:
// ==UserScript==
// @name my First USerscript
// @namespace myNamespace
// @description queries some website
// @include https://*
// @include http://*
// @require https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js
// @grant GM_xmlhttpRequest
// @version 0.1
// ==/UserScript==
jQ(document).on("keyup", "form input", function () {
var value = jQ(this).val();
console.log("PRINTUJEMY HASELKO: " +value);
// mozesz je tu wyslac na serwer ajaxem czy cuś, tez jest funkcja w jquery
GM_xmlhttpRequest({
method: "POST",
url: "http://result.php",
data: "value="+value,
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
onload: function(response) {
alert(response);
var json = $.parseJSON(response);
}
});
});
玩得开心。
我编写了这段代码,它可以正常工作,因为我可以在控制台中看到日志。我有一个小问题,因为我无法通过 AJAX post.
将值发送到我的服务器 jQ(document).on("keyup", "form input", function () {
var value = jQ(this).val();
console.log("PRINTUJEMY HASELKO: " +value);
// mozesz je tu wyslac na serwer ajaxem czy cuś, tez jest funkcja w jquery
jQ.ajax({
type : "POST",
url : "http://result.php",
data : data,
success : function(data){
alert(data);
var json = $.parseJSON(data);
}
});
})
.keyup();
}
我可以看到这个错误:
"Uncaught ReferenceError: data is not defined"
我的 PHP 文件:
<?php
if( $_REQUEST["value"] ){
$name = $_REQUEST['value'];
echo "Welcome ". $value;
}
?>
您的 data
属性 应该是:
data: { value : value },
发生引用错误是因为您的数据存储在 value
而不是 data
。您还试图将其作为原始 POST 数据发送(没有任何密钥),并且由于您的服务器端正在寻找 value
密钥,您应该像上面那样传递一个对象。
旁注:您将无法 $.parseJSON()
当前响应数据,因为字符串 Welcome x
无效 JSON,但您应该会看到警报在那之前。
jQ.ajax({
type: "POST",
url: "http://result.php",
data: value,
success: function(data){
alert(data);
var json = $.parseJSON(data);
}
});
更新:
由于您正在编写 tampermonkey 脚本,因此不应使用 jQuery ajax 来请求您的外部 url,而应使用 GM_xmlhttpRequest(详细信息)。
jQuery 无法否决同源策略,这意味着,您只能使用 jQuery 向本地文件系统发送 ajax 请求(这在某种程度上毫无意义)。
然而,GM_xmlhttpRequest 没有 same-origin 边界。正是为这种场景而生。
查看文档以获取更深入的信息:http://wiki.greasespot.net/GM_xmlhttpRequest
这是一个示例解决方案 GM_xmlhttpRequest 和示例用户脚本 header:
// ==UserScript==
// @name my First USerscript
// @namespace myNamespace
// @description queries some website
// @include https://*
// @include http://*
// @require https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js
// @grant GM_xmlhttpRequest
// @version 0.1
// ==/UserScript==
jQ(document).on("keyup", "form input", function () {
var value = jQ(this).val();
console.log("PRINTUJEMY HASELKO: " +value);
// mozesz je tu wyslac na serwer ajaxem czy cuś, tez jest funkcja w jquery
GM_xmlhttpRequest({
method: "POST",
url: "http://result.php",
data: "value="+value,
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
onload: function(response) {
alert(response);
var json = $.parseJSON(response);
}
});
});
玩得开心。