2012-09-01 59 views
0

我有这样的形式:Trouoble使用Ajax提交到数据库

<form method = \"get\" action = \"\" onsubmit = \"return addBeer('$user','$id','$name','$abv','$ibu','$icon','$style','$brewery','$breweryID','$icon')\" > 

<p> <input type = \"submit\" value = \"Go Fishing\" /> </p> 

</form> 

调用该JavaScript函数:

function addBeer(user,id,bname,abv,ibu,icon,bstyle,brewery,breweryID,icon) 
     { 
      //get elements 

      alert('userID' + user); 

      alert('beerid'+id); 

      alert('beername'+bname);   

      alert('style'+bstyle); 

      alert('brewery'+brewery); 

      alert('abv'+abv); 

      alert('ibu'+ibu); 

      alert('brewery id'+ breweryID); 

      alert('icon'+icon); 


      //run ajax 
      var ajaxSettings2 = 
      { 
       type: "POST", 
       url: "addBeer.php", 
       data: "uID="+user+"&bID="+id+"&bName="+bname+"&bStyle="+bstyle+"&bBrewery="+brewery+"&abv="+abv+"&ibu="+ibu+"&breweryID="+breweryID, 
       success: function() 
       { 
        $('#sbutton').remove(); 
        alert('Load was performed.'); 
       }, 

       error: function(xhr, status, error) { alert("error: " + error); } }; 
      $.ajax(ajaxSettings2); 

     } 

所有警报工作,所以我知道一个事实,即信息获取传递从表单到函数,但是它在ajax调用addBeer.php时失败,因为它运行错误函数并弹出错误警报。弹出窗口中没有任何内容报道Unfortunetley。

这是被称为添加到数据库中的addBeer.php文件:我拿出了我的安全API密钥和表名

<?php 

       require_once('myConnectDB.inc.php'); 
       require_once('page.inc.php'); 

       session_start(); 





         //add beer to database code 
         $userID = $_POST['uID']; 
         $beerName = $_POST['bName']; 
         $beerID = $_POST['bid']; 
         $brewery = $_POST['bBrewery']; 
         $style = $_POST['bStyle']; 

         $abv = $_POST['abv']; 
         $ibu = $_POST['ibu']; 
         $breweryID = $_POST['breweryID']; 
         //$icon = $_POST['icon']; 


         //get brewery icon 
         $uri3 = "http://api.brewerydb.com/v2/brewery/$breweryID?key=myKey&format=json"; 
         $response3 = file_get_contents($uri3); 
         //parse xml 
         $myBrew = json_decode($response3); 
         $iconBrew = $myBrew->data->images->medium; 

         //add above data to database 
         $db = new myConnectDB(); 

         $beerName = $db->real_escape_string($beerName); 
         $beerID = $db->real_escape_string($beerID); 
         $brewery = $db->real_escape_string($brewery); 
         $style = $db->real_escape_string($style); 
         $userID = $db->real_escape_string($userID); 
         $abv = $db->real_escape_string($abv); 
         $ibu = $db->real_escape_string($ibu); 
         $breweryID = $db->real_escape_string($breweryID);   
         $icon = $db->real_escape_string($icon); 




         $query3 = "INSERT INTO tableName (userID,beerID,beerName,beerStyle,beerBrewery,abv,ibu,breweryID,icon, brewIcon) VALUES ($userID, '$beerID', '$beerName', '$style' , '$brewery', '$abv','$ibu','$breweryID', '$icon', '$iconBrew')"; 
         $db->query($query3); 


       ?> 

我检查了检查元素下的chrome中的网络选项卡,并且当我点击addBeer.php调用并查看标题下的表单数据时,表明信息正在传递。

更新:

我逃避我的报价,因为它是从PHP

+1

您可能想要通过从addBeer返回false来阻止表单提交 – Musa

+0

感谢您的提示,我忘了这一点,并想知道为什么我的页面仍然清爽。 – Mike

+1

嗨,迈克,你可以编辑你的文章,并解释你为什么要转义你的表单HTML中的引号?这很不清楚。 – jmort253

回答

0

经过很多很多的挫折,我想出了我的问题。我发送的信息是从另一个数据库查询的,所有这些信息并不总是完整的。

如果我点击提交,它和函数调用中的变量之一是一个空字符串,它不喜欢它。

-1

印刷你有你的一种方法,在形式GETPOST在阿贾克斯。

+1

我将其更改为帖子,但无效。我认为这不应该解决问题,因为表单并没有真正提交任何只是调用函数的东西。 – Mike

+0

嗯也许是因为你在addBeer()前写了return,如果它没有插入到数据库中,也许是因为你没有在插入查询中在$ userID周围添加单引号希望这能修复它 –

+0

我不相信我需要单$ userID中的引号作为int而不是字符串。无论如何,我尝试了一下,并没有改变一件事。 – Mike