2013-05-05 53 views
-1

这是我现在使用的让AJAX从javascript传递字符串变量到PHP

<script> 
    $(document).ready(function() { 
     var namer = sessionStorage.getItem("namer"); 
     $.ajax({ 
      type: "POST", 
      url: "Antibiotics2.php", 
      data: { 'name': namer } 
     }).done(function(msg) { 
      alert("Data Saved: " + msg); 
     }); 
    }); 
</script> 

的JavaScript,这是PHP:

<?php echo $_POST['name']; ?>    

它抛出一个错误,并表示,该指数'name'找不到。

+0

这是更新的问题...仍然有问题。 – user1518003 2013-05-06 02:48:12

回答

0

那么我已经复制你的设置,每次我能够检索$ _POST中设置的变量。我也避免修改名称,因为您声明会议正在以类似的问题正确捕捉。

我能够通过将namer变量设置为undefined或尝试检索不存在的值来重现错误。

由于我可以发送变量名字只要它被设置,那么你将不得不做一些事情。

  1. 检查是否设置了namer变量,可能是客户端和服务器端。这是在JavaScript你会测试,如果变量不是未定义或在PHP中,你会检查是否设置$ _POST ['namer']。

  2. 您的会话可能会过期,因此您要检索的值ofcourse不再存在,这可能是依赖于你正在使用或设置该库创建会话

当你声明在这两种情况下,您都会遇到同样的错误,并通过执行某些逻辑来避免此错误。

服务器端检查 - PHP:

if(isset($_POST['namer'])){ 
    echo $_POST['namer']; 
}else{ 
    echo "session capture unsuccessful"; 
} 

客户端检查 - 使用Javascript:

var namer = sessionStorage.getItem("namer"); 

if (typeof namer === "undefined") 
    console.log("your session is not set"); 
} else{ 
    // you could place your ajax request here 
    // or you could set the namer variable to a default value 
} 

如有可能开发本地Web应用程序,因为它是更容易调试,并作为最后注意它可能更易于使用console.log(yourError)进行调试,而不是alert(yourError)。

+0

我遵循你的建议,并在客户端和服务器端设置变量。但它不会显示在Firefox页面上。我使用了firebug,并查看了脚本选项卡,并在此处打印了所需的字符串变量。那么这是我的浏览器的问题吗?我不认为这是因为铬有同样的问题。 – user1518003 2013-05-06 19:53:38

+0

好的,现在你已经确认你的变量正在设置,如果你想在你的网站的特定部分显示值,那么你可以使用$(“#nameOfDiv”)。append(msg);这是从您的ajax请求返回的值现在可以添加到您网站的任何部分。 – thirdOctet 2013-05-06 22:22:23

+0

我想将该字符串用作SQL语句的一部分。这可能吗? – user1518003 2013-05-07 00:51:26

1

您正在进行邮寄呼叫,因此您需要使用$ _POST而不是$ _GET。此外,使用引号的字符串键

echo $_POST['namer']; 
1

因为你是一个post请求,你将不得不使用$_POST检索数据,还必须将数据发送键/值对,如

<script> 
$(document).ready(function() { 
     var namer = sessionStorage.getItem("namer"); 
     $.ajax({ 
      type: 'post', 
      url: 'Antibiotics2.php', 
      data: {namer:namer} 
     }); 
}); 
</script> 

PHP

<?php echo $_POST['namer']; ?> 
2

你不告诉PHP变量的名字你发送:

$.ajax({ 
      type: 'post', 
      url: 'Antibiotics2.php', 
      data: { 'namer': namer } 
     }); 
}); 

你会想$_POST在PHP端,并自动引用变量名:

<?php echo $_POST['namer']; ?> 
0

Ajax代码张贴在这个问题对我的作品。但我使用Java和我的事情

<?php echo $_POST['namer']; ?>

是PHP的等效

<%= request.getParameter("namer") %> 
在JSP

请打开Firebug或Chrome开发者工具,查找整个请求参数是由您的Ajax请求发送。

希望这会有所帮助。

+0

我打开了萤火虫,然后打开脚本标签。该请求已成功将字符串变量发送给php。但在实际的Firefox页面上,它显示变量未定义。根据以下建议,我测试了服务器端和客户端以查看该变量是否设置为值。在两种情况下都是这样,但仍未出现在浏览器上。不知道该从哪里出发。 – user1518003 2013-05-06 19:51:20

+0

请在发送Ajax请求时检查Firebug中的“Net”选项卡。 打开Firebug - >选择网络选项卡 - >点击XHR选项 ,然后发送您的ajax请求并检查POST参数。 – Arghya 2013-05-07 05:12:37