PHP jQuery .post .get,这是正确的方法吗?

时间:2013-08-01 10:55:37

标签: php javascript jquery ajax

这是我的应用程序的提交版本,关于浏览器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加载代码中的序列化文本制作PHP数组,这是好方法吗?

3 个答案:

答案 0 :(得分:1)

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

P.S。不要使用$ _REQUEST。使用$ _GET和$ _POST代替。

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

答案 1 :(得分:0)

$ .post应如下

$.post("Save.php", {text : JSON.stringify(text)}, 'text'); 

答案 2 :(得分: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');
});

底线:学会使用文档