AJAX + jQuery ...变量不传递给PHP
嘿家伙, 试图做一件非常简单的事情:将2个文本变量传递给一个php脚本并将它们插入到MySQL数据库中。由于某些原因,但我无法让变量通过(所以我只是在我的数据库中获得空记录)。AJAX + jQuery ...变量不传递给PHP
function ajaxCall(){
$.ajax({
type: "GET",
url: "http://www.*.be/bubblingAjax.php",
cache: false,
data: "colour="+colour+"&size="+size,
dataType: "html",
success: onSuccess
});
return false;
};
而且PHP:
<?php
try
{
$connection = mysql_connect("#");
mysql_select_db("#");
$colour = mysql_real_escape_string($_GET['colour']);
$size = mysql_real_escape_string($_GET['size']);
mysql_query("INSERT INTO bubble (colour, size) VALUES ('$colour', '$size')");
mysql_close($connection);
echo "SUCCESS";
echo $colour;
echo $size;
}
catch(Exception $e)
{
echo $e->getMessage();
}
?>
任何人都愿意采取快速看一下它,并指出我的 - 可能obvious-错误?这让我疯狂了一天!
谢谢!
这工作:
<script type="text/javascript">
$(document).ready(function() {
//you can wrap the code into an event, e.g click()
var colour=...
var size=...
$.post("http://www.website.com/bubblingajax.php", { colour: colour, size: size },
function(data) {
alert("Respond: " + data);
});
});
</script>
和PHP(只改到发布)
<?php
try
{
$connection = mysql_connect("#");
mysql_select_db("#");
$colour = mysql_real_escape_string($_POST['colour']);
$size = mysql_real_escape_string($_POST['size']);
mysql_query("INSERT INTO bubble (colour, size) VALUES ('$colour', '$size')");
mysql_close($connection);
echo "SUCCESS";
echo $colour;
echo $size;
}
catch(Exception $e)
{
echo $e->getMessage();
}
?>
而且调试,我会建议使用萤火虫或铬的内置检查工具。
请尽快试一试。调试的问题在于,这只是一小部分,只是一个运行在手机上的更大应用程序(因此没有铬或萤火虫)。 – user775060 2011-05-29 13:03:29
谢谢,这个工程! – user775060 2011-05-29 13:24:47
“数据”参数作为POST变量而不是GET变量发送。在PHP 尝试$ _ POST
将它交换到发布,仍然只是吐空记录... – user775060 2011-05-29 11:04:50
数据参数不作为发送请求获取请求。jquery其实足够聪明将数据值转化为查询字符串参数 – Ben 2011-05-29 11:19:24
测试这在test.php的文件(名称事项):
<?PHP
if(isset($_POST['user_name']))
{
$post_output=
'Hello '.strtoupper($_POST['user_name']).' from '.strtoupper($_POST['user_city']).'!
This is an other random:'.rand(23,46).'.
The previous random is still alive!
I guess you can insert these 2 values
in the database on your own now, don\'t you?!';
$get_output=
'
___________________________________________
Well if you insist you can keep using get on parallel
This is what $_GET says:
'.strtoupper($_GET['getMessage']).'
And finally you can avoid post at all, to do that:
1.Use get instead of post inside the insertToDB function
2.Use send(null) instead of send(params)
3.Don\'t send the headers
HOWEVER I LIKE POST!';
echo $post_output;
print $get_output;
exit;
}
?>
<html>
<head>
<script language="javascript" type="text/javascript" >
<!--
var request = false;
try {
request = new XMLHttpRequest();
} catch (trymicrosoft) {
try {
request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (othermicrosoft) {
try {
request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (failed) {
request = false;
}
}
}
if (!request)
alert("Error initializing XMLHttpRequest!");
function insertToDB()
{
var url = "test.php?getMessage=Hi%20There!%20Use%20me%20if%20you%20like..";
var params = "user_name=" + (document.getElementById("user_name").value)+
"&user_city="+(document.getElementById("user_city").value);
request.open("POST", url, true);
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded;charset=utf-8");
request.setRequestHeader("Content-length", params.length);
request.setRequestHeader("Connection", "close");
request.onreadystatechange = updatePage;
request.send(params);
}////////////////////
//You're looking for a status code of 200 which simply means okay.
function updatePage() {
if (request.readyState == 4) {
if (request.status == 200)
{
//alert(decodeURIComponent(request.responseText));
alert(request.responseText);
}
else{
//alert("status is " + request.status);
}
}
}
// -->
</script>
</head>
<html>
<body>
This is a random:<?PHP echo rand(1,23);?><br>
<input type="text" name="name" value="your name here" size=80 id='user_name' ><br>
<input type="text" name="city" value="your city goes here" size=80 id='user_city' ><br>
<input type="submit" name="bttn" value="Go" onClick="insertToDB();" >
</body>
</html>
手机上运行
好吧,我不知道我上面的脚本将做一部手机,它需要启用Javascript!
'mysql_select_db(“#)';您忘记了一个报价或者是错误的? – pltvs 2011-05-29 10:59:58
啊,只是在审查时拿出来,在部署脚本中是正确的;) – user775060 2011-05-29 11:08:14
使用萤火虫或类似的设备。 ajax请求的标题,以查看你是否错误不在javascript中,例如你可以在$ .ajax()块之前做一个“alert(size)” – Raveline 2011-05-29 11:16:39