0

私はこのフォームを持っています:

<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);

        }

すべてのアラートが機能するため、フォームから関数に情報が渡されていることはわかっていますが、エラー関数を実行してエラーアラートをポップアップするため、addBeer.phpへのajax呼び出しで失敗します。Unfortunetleyはポップアップで何も報告されません。

これは、データベースに追加するために呼び出されるaddBeer.phpファイルです。

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


                ?>

セキュリティのためにAPIキーとテーブル名を取り出しました。

inspect要素の下にあるchromeのネットワークタブを確認しました。addBeer.php呼び出しをクリックしてヘッダーの下を見ると、情報が渡されていることがフォームデータに表示されます。

アップデート:

phpから印刷されているため、引用符をエスケープしています

4

2 に答える 2

0

たくさんの欲求不満の後、私は自分の問題を理解しました。私が送信していた情報、私は別のデータベースからクエリを実行していましたが、そのすべての情報が常に完全であるとは限りませんでした。

[送信]をクリックして、関数呼び出しの変数の1つが空の文字列だった場合、それは気に入らなかった。

于 2012-09-01T23:13:03.627 に答える
-1

GETフォームと同じようにメソッドがありますがPOST、Ajaxにあります。

于 2012-09-01T19:41:56.317 に答える