我正在尝试使用ajax将数据从我的js文件传递到php文件(如下所示)。
我检查了php错误日志,看到我通过POST发送的数据无法被php识别(获取“试图获取非对象属性”错误)。
当我参考$ json-> func时,如果在最后一行失败,我也发布了我的php代码。
我做得对吗?我已经看到了一些使用jquery的post函数的例子,但是我喜欢ajax方式的成功和错误,所以我一直在努力坚持下去。
感谢帮助:)
JS:
$.ajax({
type: "POST",
url: url,
dataType : "json",
data: {func:'getSummId' ,summName: summonerName},
success: function(json){
//bla bla bla
}
error: function(){
//bla bla bla
}
PHP:
<?php
header("Content-Type: application/json", true);
header("Access-Control-Allow-Origin: *");
$client_data = file_get_contents("php://input");
$json = json_decode($client_data);
switch ($json->func) {
...
答案 0 :(得分:2)
method: "POST"
指的是返回的数据,而不是您发送数据的方式。
所以你的数据将在dataType
全局变量中,并且使用php://输入在这种情况下不适用于json_decode
所以你可以使用
$_POST
或者您可以尝试在jQuery ajax请求中设置内容类型选项(虽然我从未尝试过这样做,因此您必须对其进行测试)
$func = $_POST['func'];
$summName = $_POST['summName'];
未设置$.ajax({
type: "POST",
url: url,
contentType: "application/json",
dataType : "json",
data: {func:'getSummId' ,summName: summonerName},
时,默认为
contentType
PHP自动将该类型的请求解析为$ _GET / $ _ POST / $ _ REQUEST全局变量。 PHP本身并不知道如何自动解析发送给它的应用程序/ json请求。因此,当想要以json的形式发送请求数据时,您必须自己阅读application/x-www-form-urlencoded; charset=UTF-8
。
答案 1 :(得分:0)
尝试将public static string RandomString(Random r)
{
string s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
var sb = new StringBuilder();
int cnt = r.Next(5, 33);
for (int i = 1; i <= cnt; i++)
{
int idx = r.Next(0, s.Length);
sb.Append(s.Substring(idx, 1));
}
return sb.ToString();
}
private void timer2_Tick(object sender, EventArgs e)
{
var r = new Random();
string useragent = RandomString(r);
timer2.Stop();
timer2.Interval = 1;
timer2.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
Navigate("http://example.org",useragent,null);
}
更改为type: "POST"