PHP无法从Javascript Jquery获取信息

我有一个javascript页面,应该将用户输入的用户名发送到服务器上的php脚本。 javascript页面来自 http://192.168.1.4/login.html ,它试图访问php http://192.168.1.4/GetInfo.php 上的脚本。 我认为我无法从javascript页面访问php脚本中的用户名,因为firefox中的原始策略相同,但我不知道如何确认这种怀疑所以请原谅我,如果我错了。 我刚刚开始学习javscript和php。 我想知道是否有不同的方式来传递这些信息。 代码如下。 谢谢!</ p>

javascript:</ p>

 &lt; html&gt; 
&lt; head&gt;
&lt; title&gt; SplitAuth&lt;登录页面 ; / title&gt;
&lt; / head&gt;
&lt; script language =“javascript”src =“http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js”&gt; &lt; / script&gt;
&lt; script language =“Javascript”&gt;
function getUsername()
{
var username = window.prompt('Please Type Your Username');
var temp = document。 getElementById('temp');
temp.innerHTML = username;
jQuery.ajax(
{
type:“POST”,
url:“GetInfo.php”,
data:username,
success:function(msg)
{alert(“data Saved:”+ msg);}

}); //结束jQuery send

} //结束GetUsername函数
&lt; / 脚本&gt;
&lt; body onLoad = getUsername()&gt;
&lt; div id =“temp”&gt;这将显示文字&lt ; / div&gt;
&lt; body&gt;

&lt; / html&gt;
</ code> </ pre>

php脚本:</ p>

  &lt;?
$ inFile =“MyID.config.php”;
$ handle = fopen($ inFile,'r')或die(“因为文件MyID.config.php而无法获取凭据 不会打开。“);

echo $ _POST ['msg'];

nclclose($ fh);

?&gt;
</ code> </ pre>
</ div >

展开原文

原文

I have a javascript page that is supposed to send the username that the user enters to a php script on the server. The javascript page comes from http://192.168.1.4/login.html and it tries to access a php script at http://192.168.1.4/GetInfo.php. I think that I cannot access the username in the php script from the javascript page because of the same origin policy in firefox however, I'm not sure how to confirm this suspicion so please forgive me if I am wrong. I have only just begun to learn javscript and php. I was wondering if there is a different way to pass this information then. The code is below. Thanks!

The javascript:

<html>
    <head>
        <title>Login Page for SplitAuth</title>
    </head>
    <script language="javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
    <script language="Javascript">
        function getUsername()
        {
            var username = window.prompt('Please Type Your Username');
            var temp = document.getElementById('temp');
            temp.innerHTML = username;
            jQuery.ajax(
                {
                    type: "POST",
                    url:"GetInfo.php",
                    data: username,
                    success: function(msg)
                            {alert("data Saved: "+msg);}

                });//ends the jQuery send

        }//ends the GetUsername function
    </script>
    <body onLoad=getUsername()>
        <div id="temp">This will show text</div>
    <body>

</html>

The php script:

<?
$inFile="MyID.config.php";
$handle=fopen($inFile, 'r') or die ("No credentials could be gotten because the file MyID.config.php would not open.");

echo $_POST['msg'];

fclose($fh);

?>

douyu1656
douyu1656 实际上我是自己写的,因为我说我在学习,所以反而或做出一个愚蠢的评论,就像下次说一些有建设性的或根本不说什么的
8 年多之前 回复
douhuan1380
douhuan1380 是的,我实际上在服务器和我自己的网络上工作,然后将它发布到全世界。所以目前IP地址还可以。在想到我可能需要一些帮助之前,我搞砸了原来的'$POST['用户名']。
8 年多之前 回复
dounabi6295
dounabi6295 让一个奇怪......这篇文章多大了,你从中复制粘贴脚本
8 年多之前 回复
dsirr48088
dsirr48088 由于javascript运行客户端,192...将无法工作,除非你运行ajax请求的机器是服务器本身。还有数据:用户名错误-应该是数据:“username=”+用户名我认为-但是你也不用PHP引用它。你的PHP代码完全没有意义......很难说你想要做什么。
8 年多之前 回复
dongmi0760
dongmi0760 php脚本直接工作吗?
8 年多之前 回复
doudouxuqh198138
doudouxuqh198138 如果您在浏览器中访问192.168.1.4/GetInfo.php,您会得到什么?
8 年多之前 回复

3个回答



您应该在数据前加上</ code>:“msg =”。</ p>

...
data:“msg =”+ username,
...
</ code> </ pre>

原因是 jQuery。 ajax </ code>需要查询字符串或对象,这意味着</ p>

  ... 
data:{msg:username},
...
< / code> </ pre>

也可以。</ p>

看一下 jQuery.ajax文档。 特别是 data </ code> -section </ p>
</ div>

展开原文

原文

You should prepend your data: with "msg=".

...
data: "msg="+username,
...

and the reason is that jQuery.ajax expects a query string or an object, which means that

...
data: {msg: username},
...

would also work.

Take a look at the jQuery.ajax Documentation. Specifically the data-section

doucheng9304
doucheng9304 谢谢,我没有意识到我在“?”之后构建了URL的一部分。 这显然表示发送的变量。 谢谢你的帮助!
8 年多之前 回复
duanhuizhe6767
duanhuizhe6767 你是对的,javascript是松散类型的,所以通常通过你赋给变量的值来获取暗示的数据类型,但在这种情况下,它不是关于变量的数据类型 - 它是关于服务器期望接收的内容, 如果你想要更多细节,你可以在这里阅读查询字符串:en.wikipedia.org/wiki/Query_string
8 年多之前 回复
douxun1407
douxun1407 仅仅是一个字符串是不够的,它必须是一个查询字符串。 特别是一个带有密钥msg和username内容作为值的查询字符串。 密钥必须是msg的原因是您的PHP代码使用此密钥。
8 年多之前 回复
dongyaobo9081
dongyaobo9081 谢谢! 这有用,但我想澄清一些事情。 我认为Javascript应该足够聪明,知道变量何时是一个字符串,当它不是这样时,我认为有一个变量是一个字符串(或者我想的那样)就足够了。
8 年多之前 回复



您正在使用POST方法,并且您发送的数据是错误的。 您需要构建要发送的数据。 看看ajax方法中的jquery页面。 这就是它对数据属性所说的内容。</ p>

http:// api.jquery.com/jQuery.ajax/ </ p>

要发送到服务器的数据。 如果不是字符串,它将转换为查询字符串。 它附加到GET请求的URL。 请参阅processData选项以防止此自动处理。 对象必须是键/值对。 如果值是数组</ strong>,则jQuery根据传统设置的值(如下所述)使用相同的键序列化多个值。</ p>
</ div>

展开原文

原文

You are using POST method and data that you are sending is wrong. You need to build data to be sent. Take a look at jquery page in ajax method. This is what it says for data attribute.

http://api.jquery.com/jQuery.ajax/

Data to be sent to the server. It is converted to a query string, if not already a string. It's appended to the url for GET-requests. See processData option to prevent this automatic processing. Object must be Key/Value pairs. If value is an Array, jQuery serializes multiple values with same key based on the value of the traditional setting (described below).

dongxian2863
dongxian2863 可以至少发布链接...
8 年多之前 回复



您的脚本应如下所示。 </ p>

  $ .ajax({
type:“POST”,
url:“GetInfo.php”,
data:“{name:”+ username +“ }“
})。done(function(msg){
alert(”Data Saved:“+ msg);
});
</ code> </ pre>

你的PHP脚本没有获得用户名值。 $ _POST ['msg']中使用的“msg”将不会发出任何警报,因为它没有任何值。 “msg”变量用于将返回值的值存储到html页面。 我建议你阅读更多来自www.jquery.com </ p>
</ div>

展开原文

原文

Your script should look like this.

 $.ajax({
  type: "POST",
  url: "GetInfo.php",
  data: "{name:"+ username + "}"
  }).done(function( msg ) {
 alert( "Data Saved: " + msg );
 });

And your php script isn't getting the username value. The "msg" used in your $_POST['msg'] will alert nothing because it is not having any value. The "msg" varaible is meant to store the value of the returned value to your html page. I will recommend you read more of from www.jquery.com

doudou1897
doudou1897 没问题。 最后一件事(鞭打死马我知道大声笑)但$ .post和$ .get都是$ .ajax的包装器,类型参数已设置。 公平地说,并不是那么明显。
8 年多之前 回复
doupuchen6378
doupuchen6378 谢谢你的纠正。 这是一个忽视错误。
8 年多之前 回复
doubi4340
doubi4340 抱歉,但那不对。 这里的大括号:“{name:”+ username +“}”会产生一个看起来像这样的请求(例如,如果它是GET):someUrl.com?{name:value}这不是一个有效的请求 。 进行ajax函数调用时,数据输入必须是对象或有效的查询字符串,而不是看起来像对象的字符串。 不要相信我? 读这个:api.jquery.com/jQuery.ajax
8 年多之前 回复
dsg24156
dsg24156 反引号不是脚本的一部分。 上面脚本中唯一需要的对象是用户名,标签可以作为字符串传递。 再想一想,“$ .Ajax”不是用于发布表单,你应该使用“$ .Post”。
8 年多之前 回复
dongmuzhan4705
dongmuzhan4705 实际上等了一下,ajax调用中的数据值对我来说是错误的。 那是一个字符串,而不是一个对象。 不要以为这会奏效。
8 年多之前 回复
drwg89980
drwg89980 减去我假设的反叛?
8 年多之前 回复
立即提问