我在本说明中附加的代码的目标是1) 收集表单中的数据。2) 张贴到PHP文件,在该文件中收集的信息被转换为JSON3) 将JSON信息写入文件``4) 返回当前的JSON并将其写入一个在HTML中称为Return的ID。
除第4步外,以上所有操作都有效,我似乎能找到错误。我希望有人能看一眼,告诉我我误入歧途的地方。。我知道我可以将JSON数据写入一个文件,然后将文件的全部内容读取到jsonReadArea。我还希望能够从PHP文件将当前JSON返回到jQuery成功函数并显示它。昨晚用调试器进一步调查,我似乎返回了一个对象,但该对象没有被正确访问。在HTML中,你会发现一个名为"返回"的文本,上面写着"成功时HTML被替换。在jQuerypost函数中,你可以看到成功和错误返回都试图写入。我不知道如何正确地在PHP文件中,如果成功,将JSON发送回jQuery post,如果不成功,将错误语句发送回"返回"DIV区域。javaScript jQuery:
$("#Jform").submit(function()){
data = $('#Jform').serialize();
$.ajax({
type: "POST",
dataType: "data",
url: "processJson.php",
data: data,
success: function (msg) {
displayRet(msg);
},
error: function (msg) {
console.log(msg);
$("#the-return").html(msg);
}
});
return false;
});
// load() functions
$('#jsonReadButton').click(function () {
$('#jsonReadArea').load('storage/jsonStorage.txt');
});
function displayRet(inc) {
$("#the-return").html(
"Return String: Name: " + inc["name"] +
"<br />Email: " + inc["email"] +
"<br />Gender: " + inc["gender"] +
"<br /Temperature: " + inc["temperature"] +
"<br />terms " + inc["terms"] +
"<br />JSON: " + inc["json"]
);
alert("Form submitted successfully.'nReturned json: " + inc);
}
现在的PHP代码:
<?php
/*
* PHP Filters
* http://www.w3schools.com/php/php_filter.asp
*
*/
$error = FALSE;
$name = filter_input(INPUT_POST, "name", FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, "email", FILTER_VALIDATE_EMAIL);
$gender = filter_input(INPUT_POST, "gender", FILTER_SANITIZE_STRING);
$temperature = filter_input(INPUT_POST, "temperature", FILTER_SANITIZE_STRING);
$terms = filter_input(INPUT_POST, "terms", FILTER_SANITIZE_STRING);
$tempArray = array("name" => $name, "email" => $email, "gender" => $gender, "temperature" => $temperature, "terms" => $terms);
$jsonVal = json_encode($tempArray);
// Open file and test operation
$fileHandle = fopen('storage/jsonStorage.txt', "a");
if (!$fileHandle) {
$error = TRUE;
} else {
fwrite($fileHandle, $jsonVal);
fwrite($fileHandle, "<br />'n");
}
if ($error === FALSE) {
return $jsonVal;
} else {
return "An error occured";
}
您将返回值(因为您不在函数中,所以不返回任何值),而不是print
将其返回到输出流。
您还忘记将Content-Type标头从默认的text/html
:更改为
header("Content-Type: application/json");
您需要做的是一个简单的回声,如下所示:
echo$jsonVal;
然后在javascript端,您可以使用函数json.parse