我有一些jQuery / HTML,我接受一个用户输入(文本)项,并希望将其传递给PHP,以便以后在会话变量中使用。我已经查看了很多关于此类行为的网页,并且发现我认为我需要的最接近的答案是Set Session variable using javascript。以下代码基于此,但似乎ajax什么都不做。我已经完成了console.logs,并且在每条可能的路径中都通过ajax语句(完成,失败并且始终),但都没有出现。控制台日志显示:
(文件)。就绪
从输入
ListA1
passName:ListA1
对象{listNamePOST:" ListA1"}
passName function end
从passName()
即将回复$ _SESSION [' listName']:
端
哪个错过了6.成功或6.失败和7.总是。行console.log(<?php echo $ _SESSION [' listName']?>);甚至没有显示空白行。
我哪里出错了,拜托?
这是test.php
<?php session_start(); ?>
<form method="post" name="newlistform">
<label for="list_name">Input:</label>
<input style="position: relative; " name="list_name" type="text" required />
<span class="button" id="makeIt">Go</span>
</form>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<script>
/* ƒ: Pass listName out to SESSION variable */
function passName ( listName ) {
console.log('4. passName: ', listName);
var params = {listNamePOST: listName};
console.log("5. :");
console.log(params);
jQuery.ajax({
url: "storesession.php",
type: "POST",
data: params,
dataType : "json",
success: function(data, textStatus, xhr) {
console.log("6. success");
console.log(data);
},
error: function(xhr, textStatus, errorThrown) {
console.log("6. fail");
}
});
console.log('8. passName function end');
}
$(document).ready(function () {
console.log('1. (document).ready');
$( '#makeIt.button' ).click(function () {
console.log('2. Take new list name from input');
var listName = $( 'input[name=list_name]' ).val();
console.log('3.', listName);
passName ( listName );
console.log('9. returned from passName()');
console.log("10. about to echo $_SESSION['listName'] :");
console.log(<?php echo $_SESSION['listName'] ?>);
console.log('12. end');
});
})
</script>
这里是storesession.php
<?php
$_SESSION['listName'] = $_POST['listNamePOST'];
?>
(我稍后会对用户输入进行清理。)
修改:刚删除&#39; test.php&#39;在每个控制台日志行的末尾。我无意中复制了它们。
第二次编辑:有关信息 - 此代码是一个较大的php文件的摘录,其中包含另一个$ .ajax调用,用于从MySQL数据库中获取一些数据,这是有效的。
第3次修改:已完成修改:&#39;回到成功:&#39;,&#39;失败:&#39;回到&#39;错误:&#39;并永远删除&#39;。这个现在增加了6.成功作为最后一行,所以@FrancescoMM和@Kevin让我说得对,虽然我不明白为什么当我最初的时候它没有工作。
As&#39; 6。成功&#39;出现在日志的末尾,我将尝试async:false并报告回: - 好的,它修复了序列问题,但日志语句10和12之间的控制台日志语句仍然没有出现。不,未定义&#39;甚至是一个空白行。
所以问题现在减少为将listName转换为会话变量。
第4次修改:现在已经解决了。当我将session_start语句从test.php移动到storesession.php并发现它没有工作时,我将其移回,但不是第一个语句。我发现http://www.yourhowto.net/how-to-check-and-create-php-session-variables/之后将语句移动到最开头,现在用户数据被传递到会话变量并在10到12之间的日志末尾正确显示。
答案 0 :(得分:0)
如果它真的是你的完整storesession.php,那么你遗漏了session_start()
。
答案 1 :(得分:0)
您是否从AJAX调用返回json格式的数据?我有一个类似的问题,因为数据类型,丢失dataType : "json"
,除非你实际上返回json,看看是否有帮助。