1

这是我的应用程序的提交版本,关于浏览器 javascript 将数据保存到服务器并使用 .post 和 .get jQuery ajax 调用从服务器加载它。

returnState添加到提交的代码以显示其从服务器接收(用于测试目的,告诉接收什么)。

保存 Javascript 代码:

var text = [];
text = {
    text: "Text to be saved.",
    returnState: "success"
};
$.post("Save.php", {
    datatype: "json",
    text : JSON.stringify(text)
});

服务器保存PHP代码:

<?php
session_start();
$json = $_REQUEST['text'];
if(get_magic_quotes_gpc()) $json = stripslashes($json);
$new = (array)json_decode($json);
$_SESSION['savedText'] = $new['text'];
echo $new['returnState'];
?>

加载 Javascript 代码:

var text = [];

$.get("Load.php", {
    returnState: 'success'
}).done(function (data) {
    text = JSON.parse(data);

    console.log(text.returnState);
    console.log(text.text);
});

服务器加载 PHP 代码:

<?php
session_start();
$returnValues = array(
    text => json_decode($_SESSION['savedText']),
    returnState => $_SESSION['returnState']
);
echo json_encode($returnValues);
?>
  • 如果出现错误,我将无法获得可以解释为失败的正确数据。我应该.fail()改用吗?
  • 如果我不想使用自己的returnState,PHP 响应如何/如何使 jQuery 落入.fail()
  • 我努力从服务器 PHP 加载代码中的序列化文本中制作 PHP 数组,这是好方法吗?
4

3 回答 3

1
  • 使用 .fail 和 .done
  • 使用 4xx http 代码而不是自定义“returnState”。它将触发 .fail 函数

PS 不要使用 $_REQUEST。请改用 $_GET 和 $_POST。

PPS 不要使用“魔术引号”,它在较新的 php 版本中已被弃用。

于 2013-08-01T11:09:55.160 回答
0

$.post 应该如下

$.post("Save.php", {text : JSON.stringify(text)}, 'text'); 
于 2013-08-01T10:59:24.193 回答
0

你发送的数据应该是第二个参数,不需要序列化

$.post('Save.php', text);

如果你需要一个成功回调函数,它必须是第三个参数

$.post('Save.php', text, function(data) {
  console.log('all good!');
});

如果您需要为返回数据指定数据类型,它必须是第四个参数

$.post('Save.php', text, function(data) {
  console.log('all good!');
}, 'json');

如果您需要失败回调,则必须使用deferred语法:

$.post('http://www.asd.it', text, function(data) {
  console.log('all good!');
}).fail(function() {
  console.log('error');
});

底线:学习使用文档

于 2013-08-01T11:18:03.060 回答