2011-05-29 133 views
3

嘿家伙, 试图做一件非常简单的事情:将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-错误?这让我疯狂了一天!

谢谢!

+0

'mysql_select_db(“#)';您忘记了一个报价或者是错误的? – pltvs 2011-05-29 10:59:58

+1

啊,只是在审查时拿出来,在部署脚本中是正确的;) – user775060 2011-05-29 11:08:14

+0

使用萤火虫或类似的设备。 ajax请求的标题,以查看你是否错误不在javascript中,例如你可以在$ .ajax()块之前做一个“alert(size)” – Raveline 2011-05-29 11:16:39

回答

0

这工作:

<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(); 
    } 
?> 

而且调试,我会建议使用萤火虫或铬的内置检查工具。

+0

请尽快试一试。调试的问题在于,这只是一小部分,只是一个运行在手机上的更大应用程序(因此没有铬或萤火虫)。 – user775060 2011-05-29 13:03:29

+0

谢谢,这个工程! – user775060 2011-05-29 13:24:47

0

“数据”参数作为POST变量而不是GET变量发送。在PHP 尝试$ _ POST

+0

将它交换到发布,仍然只是吐空记录... – user775060 2011-05-29 11:04:50

+0

数据参数不作为发送请求获取请求。jquery其实足够聪明将数据值转化为查询字符串参数 – Ben 2011-05-29 11:19:24

0

测试这在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> 
0

手机上运行

好吧,我不知道我上面的脚本将做一部手机,它需要启用Javascript!