我正在创建一个Web应用程序,并具有以下问题。从PHP脚本发送数据返回到JQuery AJAX请求
在我的应用程序中,用户在一个页面内工作,他们在画布上绘制。有一个名为“保存”的按钮。这需要用户ID和他们在画布中创建的任何内容并将其发送到数据库。这一切工作正常。保存功能resemebles这样的:
$.ajax({
url: "/database/write.php",
type: "POST",
data: {
docName: name,
docData: document_Data,
docMode: "new"
},
success: function(html) {
alert("Successfully Saved NEW document");
set_Mode();
},
});
上述AJAX请求不三个值发送到PHP脚本,然后成功地在数据库中创建一个新文档,我现在需要做的是从节约改变应用模式一个新的文件来编辑以前保存的文件。这意味着当用户再次保存时,他们将写入同一行,覆盖文档的以前版本。
当我将数据发送到write.php
时,它会将数据写入数据库并查询该插入文档的数据库并检索其唯一文档ID。使用该ID,应用程序可以选择该文档并覆盖它。若要从查询检索文档ID,我使用下面的代码在write.php
write.php
$_SESSION['DOCUMENT_ID'] = $DOCUMENT_ID;
这$ DOCUMENT_ID是从SELECT
查询检索到的文档ID。该脚本然后完成并将控制权转移回主应用程序页面。
回到应用程序页面,我尝试检索价值,但它似乎没有工作。我可以检索当用户第一次访问应用程序(id
)时设置的值,但现在由write.php
(DOCUMENT_ID
)页面设置的值设置为$_SESSION
。例如,下面显示了一个名为AJAX请求已成功后的功能:
function set_Mode()
{
var PHPvar_01 = <?php echo($_SESSION['id']); ?>;
alert(PHPvar_01); //WORKS FINE
var PHPvar_02 = <?php echo($_SESSION['DOCUMENT_ID']); ?>;
alert(PHPvar_02); //DOES NOT WORK.
};
我应该如何去发送从PHP查询脚本的应用程序检索数据,因为$_SESSION
似乎并不在这里工作。
感谢您的任何反馈意见。
我同意凯尔,这将做这项工作。但我会建议不要使用'eval'这是一个糟糕的做法。而是让Ajax调用传递参数'dataType:'json',这将确保您成功收到的数据是json – swapnilsarwe
,请不要说eval是一个不好的做法而不解释。在这种情况下,源数据是可信的(不是由一些fifo用户输入产生的),所以不需要吓倒。如果你想要更安全,你需要响应服务器端的数据,而window.JSON.parse()数据客户端(某些浏览器不支持它) – Keil
我知道源数据是可信的,因此它使用eval似乎很好。但作为一名开发人员,我不会仅仅因为我认为源代码可信就做这些事情。我相信预防胜于治疗......网上有足够的文章解释为什么应该避免使用eval ...请仔细阅读它...例如:[为什么使用JavaScript eval函数是一个坏主意?] (http://stackoverflow.com/questions/86513/why-is-using-the-javascript-eval-function-a-bad-idea) – swapnilsarwe