仍然在努力将JSON对象和url参数一起传递到php文件。有什么想法吗?
将上述数据格式化为JSON对象时,将以以下格式显示:仍然在努力将JSON对象和url参数一起传递到php文件。有什么想法吗?,php,jquery,ajax,json,Php,Jquery,Ajax,Json,将上述数据格式化为JSON对象时,将以以下格式显示: // Creating variables to hold data from textboxes. First building associated details myData.Token = $("#token").val(); myData.BuildingDisplay = $("#BuildingDisplay").val(); myData.FeatureID = $("#FeatureID").val();
// Creating variables to hold data from textboxes. First building associated details
myData.Token = $("#token").val();
myData.BuildingDisplay = $("#BuildingDisplay").val();
myData.FeatureID = $("#FeatureID").val();
myData.BuildingID = $("#BuildingID").val();
myData.Address = $("#Address").val();
myData.City = $("#City").val();
myData.District = $("#District").val();
myData.Location = $("#Location").val();
myData.State = $("#State").val();
myData.StreetName = $("#StreetName").val();
myData.Zip = $("#Zip").val();
myData.X = $("#X").val();
myData.Y = $("#Y").val();
$.ajax({
type: "POST",
url: "proxyCheck.php",
data: "{ 'Token': '" + mytoken + "','Address': '" + myaddress + "', 'City': '" + mycity + "','Location': '" + mylocation + "','State': '" + mystate + "', 'StreetName': '" + mystreetname + "', 'Zip': '" + myzip + "', 'X': '" + myX + "', 'Y': '" + myY + "'}",
contentType: "application/json;charset=utf-8",
dataType: "json",
async: false,
success: function (response) {
alert("Record has been added successfully.");
window.location.reload();
}
});
我要做的是按以下方式将它们传递到proxyCheck.php:
{data:
{
"token":"73264280-be3f-4f5b",
"BuildingDisplay":"Fire Station 21 Fairburn - 19 East Broad St.",
"CallerEmail":"Jim.Parker@yahoo.com",
"CallerFax":"",
"CallerFirstName":"Jim",
"CallerLastName":"Parker",
"CallerMiddleInitial":"",
"CallerOtherPhone":"",
"CallerState":"",
"CallerWorkPhone":"918-354-2874"}}
请注意&token=73264280-be3f-4f5b
我似乎不知道该怎么做
有人能帮忙吗
proxyCheck.php?data={data:
{
"token":"73264280-be3f-4f5b",
"BuildingDisplay":"Fire Station 21 Fairburn - 19 East Broad St.",
"CallerEmail":"Jim.Parker@yahoo.com",
"CallerFax":"",
"CallerFirstName":"Jim",
"CallerLastName":"Parker",
"CallerMiddleInitial":"",
"CallerOtherPhone":"",
"CallerState":"",
"CallerWorkPhone":"918-354-2874"}}&token=73264280-be3f-4f5b
//proxyCheck.php
$.ajax({
type: "POST",
url: "proxyCheck.php?token=" + myData.Token,
data: JSON.stringify(myData)
contentType: "application/json;charset=utf-8",
dataType: "json",
async: false,
success: function (response) {
alert("Record has been added successfully.");
window.location.reload();
}
});
return false;
}
//代理验证
var uname = $("#user").val();
var upass = $("#pass").val();
$.post("proxyValidate.php",
{ data: JSON.stringify({ LoginName: uname,Password: upass }) })
.done(function(data) {
var result = JSON.parse(data);
switch(result.Status) {
case 0:
//login successful
tokenVal = result.Value.Token;
location.href = "http://domain/userService.php?token="+tokenVal;
break;
case 2:
//invalid login
alert(result.Message);
break;
}
})
.fail(function() {
alert("The AJAX request failed!");
});
});
您真的应该使用POST处理此类数据。如果您坚持按照您的建议使用GET,那么您应该对JSON进行url编码,但仍然很容易发生url太长而无法打开的情况 编辑:一个应该有效的解决方案,作者@Archer
<?php
$ch = curl_init("http://domain/Validation/Validate");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $_POST);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
echo $output
?>
无需将javascript对象转换为字符串-jQuery将为您完成此操作。试试这个
$.ajax({
type: "POST",
url: "proxyCheck.php?token=" + myData.Token,
data: {
data: JSON.stringify(myData)
},
dataType: "json",
async: false,
success: function (response) {
alert("Record has been added successfully.");
window.location.reload();
}
});
变量名区分大小写(例如,token和token)有一个小问题,但是上面的代码应该发布您需要的内容,并且在URL中包含token值
或者,如果需要以字符串形式传递数据,则可以执行以下操作
$.ajax({
type: "POST",
url: "proxyCheck.php?token=" + myData.Token,
data: myData,
dataType: "json",
async: false,
success: function (response) {
alert("Record has been added successfully.");
window.location.reload();
}
});
对于任何可能遇到与我类似问题的人,以下是对我有效的解决方案:
$.ajax({
type: "POST",
url: "proxyCheck.php?token=" + myData.Token,
data: {
data: JSON.stringify(myData)
},
dataType: "json",
async: false,
success: function (response) {
alert("Record has been added successfully.");
window.location.reload();
}
});
不要试图通过连接来构建json字符串。创建一个javascript对象(如
myData
?)并调用JSON.stringify()
)。另外,如果你在写一篇文章,为什么你需要url参数?数据应该在身体里。@Archer,非常感谢你。问题是,当我运行代码时,我继续得到以下消息:`{“Value”:null,“Status”:2,“message”:“没有提供身份验证令牌。”}`出于某种原因,proxyCheck.php传递令牌的API由于某种原因没有看到它。另外,这些值不是以JSON格式传递的,比如{“name:”john doe“…}:Token=1e321699-5413-4c98-b3ec-5c2d98339659&BuildingDisplay=Amersee+Lakes+Pump+Station+Pump+Station+-+9100+Etching
如果你想通过邮件传递json,你应该先将其字符串化,即将其转换为字符串,然后再传递。@JsonP,Dkasipovi,我已经将其转换为json.stringify。请更新上述内容。尝试使用数据:{'data':JSON.Stringify(myData)}
@DKasipovic,它不是我,尽管我不知道我在哪里使用GET。如果他将对象指定为“data”“在jQuery帖子中,jQuery会将其转换为参数。他特别说他需要传递json,这意味着他应该首先将其转换为字符串。@D.Kasipovic很好的观点-我将修改答案以包含该选项。contentType:“application/json;charset=utf-8”,
在这里不正确。这是请求正文的内容类型。在这两个示例中,数据
将转换为查询字符串,因此它不是JSON。@RocketHazmat数据不会转换为querystring,因为它是一个post,而不是get。@Archer:是的。查询字符串将通过post正文发送。这就是您选择的原因无法发送应用程序/json
标题。
$.ajax({
type: "POST",
url: "proxyCheck.php?token=" + myData.Token,
data: {
data: JSON.stringify(myData)
},
dataType: "json",
async: false,
success: function (response) {
alert("Record has been added successfully.");
window.location.reload();
}
});
$.ajax({
type: "POST",
url: "proxyCheck.php?token",
data: {
data: JSON.stringify(myData),
token: myData.Token
},
dataType: "json",
async: false,
success: function (response) {
alert("Record has been added successfully.");
window.location.reload();
}
});