首先,我要说的是,我正在学习如何使用jquery/javascript编程,并且在使用JSON时遇到了一个问题。parse()。我了解格式,以及人们为什么使用它。。。但是在我的任何代码项目中都无法使用它。
我在书上/网上读过关于如何使用它的内容,但我觉得我读得太多了。我现在很困惑,并且在猜测我对它的了解。
话虽如此,我正在学习的jquery/javascript类要求我通过AJAX使用MAMP/localhost作为服务器,将其用于分配任务。
下面的两个代码用于我需要填写//TODO信息的部分。一个是javascript(客户端),另一个是php(服务器端)。我认为我已经正确地设置了其他//TODO信息,但是JSON部分不断出现令牌错误。
我在这里寻找解决办法,但我想我还是把自己弄糊涂了,需要帮助。感谢任何反馈、见解或信息。
-Javascript-
var calculateMpg = function () {
// These lines are commented out since the server will perform these checks
// if (!checkNumber("miles") || !checkNumber("gallons")) {
// return;
// }
var miles = $("#miles").val();
var gallons = $("#gallons").val();
console.log("ajax request issued.");
var result;
$.ajax({
url: "service.php?action=calculateMPG&miles="+miles+"&gallons="+gallons,
cache: false,
dataType: "text",
success: function(msg) {
console.log("ajax response received.");
// TODO: parse the JSON string returned from the server (see JSON.parse())
JSON.parse("result");
if (result.status === 'success') {
// TODO: get the mpg value returned from the server and display it to the user.
$("#mpg").val($_GET("result"));
console.log("JSON Working!");
}
else {
// TODO: get the name of the variable with the error. Hint: look at the 'fail' result from service.php
$_GET[fail(id)];
// TODO: report the error to the user using invalidNumber() function.
alert("{status: 'failure', variable: <variable name>}");
}
}
});
};
$(document).ready( function () {
$("#miles").blur(function () {
checkNumber("miles");
});
$("#gallons").blur(function() {
checkNumber("gallons");
});
$("#calculate").click(calculateMpg);
$("#miles").focus();
});
-PHP-
<?php
if ($_GET) {
if ($_GET['action'] == 'calculateMPG') {
$miles = htmlspecialchars($_GET['miles']);
$gallons = htmlspecialchars($_GET['gallons']);
// validate miles
if (strlen($miles) == 0) {
fail("miles");
}
$miles_chars = str_split($miles);
for ($i=0; $i< count($miles_chars); $i++) {
if ($miles_chars[$i] < "0" || $miles_chars[$i] > "9") {
//error_log("miles_chars check failed at: " + $i);
fail("miles");
}
}
// validate gallons
if (strlen($gallons) == 0) {
fail("gallons");
}
$gallons_chars = str_split($gallons);
for ($i=0; $i< count($gallons_chars); $i++) {
if ($gallons_chars[$i] < "0" || $gallons_chars[$i] > "9") {
fail("gallons");
}
}
// validate $miles and $gallons calling $fail along the way
$result = $miles/$gallons;
if ($result) {
success($result);
} else {
fail("mpg");
}
exit ;
}
}
function fail($variable) {
die(json_encode(array('status' => 'fail', 'variable' => $variable)));
}
function success($message) {
die(json_encode(array('status' => 'success', 'message' => $message)));
}
编辑附加1我已经对关于“var result”的JSON信息进行了更改(感谢这里的一些回复)。我开始更好地理解JSON了。
我(现在)遇到的另一个问题是如何将JSON消息的一部分与正在传输的整个消息隔离开来?
返回的JSON. parse(msg)的一部分DOES包含等式英里/加仑的答案,但是我不知道如何...从JSON中提取它。
方程式英里/加仑的解出现在“msg”输出中。
谢谢。
编辑附加2这个问题已经解决了!在我之前编辑的部分中,我仔细研究了stackoverflow,寻找这个问题的解决方案,我在这里找到了我的答案:在Javascript中解析JSON响应以获得键/值对。
答案是这样的:在//TODO部分询问mpg值,我将下面的代码-$(“#mpg”)。val(result.message);-也就是说,在变量result的JSON部分中,取JSON中标记为“message”的部分,该值为方程解。
感谢所有对我的问题提出解决方案的人。我非常感谢您的快速响应、出色的建议和理解JSON的信息。
-ECP03
jQuery已经为您提供了一个方便的函数来解析JSON,而不是自己解析JSON:
var path = "service.php?action=calculateMPG&miles="+miles+"&gallons="+gallons;
$.getJSON(path, function (data) {
if (data.status == 'success') {
console.log('Success! Message:', data.message);
} else {
console.log('Failed :( Variable:', data.variable);
}
});
对于原始代码,您需要做的是调用JSON。在
,该回调将返回一个JavaScript对象,其中包含从PHP脚本发送的值。通过在success
回调中解析(msg)$中指定
call,jQuery会为您做这件事。数据类型:“json”
。ajax$。getJSON
方法为您完成这项工作和其他一些事情。
您有两个选择:
选项1:--解析返回的字符串。
更改JSON。解析(“结果”)
至:
var result = JSON.parse( msg );
选项2:-请求JSON而不是纯文本-不需要解析
使用$。getJSON()是以下内容的简写:
$.ajax({
dataType: "json",
url: url,
data: data,
success: success
});
JSON. parse()
要求向其发送一个有效的JSON字符串。
“result”
不是有效的JSON字符串。在success
函数中,您定义了一个参数msg
-它包含什么?尝试控制台。在success函数的开头记录(msg)
,并查看控制台输出。
下面尝试过,但是直到并且除非我使Acyah geShipmentIn绑定节点为空(删除释放ID="9.2"xmlns="http://schema.infor.com/InforOAGIS/2"xmlns: xs="http://www.w3.org/2001/XMLSchema")选择查询不获取值。
我正在绑定使用RSA加密字符串密码。但我使用的函数是生成SecKey数据类型的公钥,这不是我需要的,因为我从服务器响应中获取的公钥是字符串。我使用了许多库,但也使用了相同的库,生成了公钥SecKey。 这个类显示了我想要更改函数func encryptBase64(text:String,SecKey:SecKey)->String{的意思,使其与func encryptBase64(text:S
问题内容: 尝试将json字符串解析为android时,会传递HTML值。一天前一切正常,突然间,尝试通过php文件获取数据库时,我的应用突然崩溃了。 当我检查注意到html值时。请参阅logcat 我在byethost服务器上托管的所有页面都发生了这种情况,而在其他服务器上托管的页面运行良好。我尝试将我的文件之一移动到其他服务器,并在该文件上返回正确的json字符串。 另外,当我在浏览器中检查u
我有一个嵌套的JSON语句,我需要将其转换为触发数据框。这个JSON语句存在于数据框列中。我一直在尝试使用“from_json”和“get_json_object”解析数据框列中的语句,但无法读取数据。这是我一直试图阅读的源数据的最小片段: 我需要提取嵌套的cript值。我使用下面的代码来清理数据并将其读入数据框 每次运行上述代码时,我都会得到一个空数据框。请帮忙。 尝试了以下内容,但没有成功:P
我在想,为什么像谷歌Chrome/Firebug/Fiddler这样的网络检查员在使用WebSockets/channel-API这样的推送技术时无法跟踪消息(或者有没有办法做到这一点?)这是因为我们正在从HTTP升级连接吗?
我不是程序员,我需要你的帮助。 我有一个返回服务器响应的cURL函数-成功或错误: 400-错误响应: 200-成功响应: 我需要验证基于200或400状态码的响应。 如果状态为200,则继续正常操作。 如果状态为400(错误),则我需要跟踪错误消息(去掉所有标签)并仅回显错误消息(在上面的示例中-为了联系,请输入有效的电话号码。) 我该怎么做?请帮忙。 非常感谢。 卷曲代码: