1

MySQLにデータを投稿するための簡単なフォームを作成しています。なぜGETではなくPOSTをするのか、あなたは考えていますか?このフォームには多くの文字を使用できる説明フィールドがあり、GETには文字制限があるため、POSTを使用することを選択しました。

これ以上の説明なしで、これが私のHTMLフォームです。

<form name="addExperienceForm" id="addExperienceForm" style="display:none;">
                    Title:<input type="text" name="title" id="title" />
                    From:<input type="text" name="startDate" id="startDate" />
                    To:<input type="text" name="endDate" id="endDate" />
                    Description:<textarea type="message" name="description" id="description"></textarea>
                    <input type="button" value="Submit" onclick="addUserExp()"/>
 </form>

次の形式の日付ボックスのjQueryDatepickerコードは次のとおりです。

//allow a date range to be selected
        $("#startDate").datepicker({
                    changeMonth : true,
                    changeYear : true,
                    dateFormat : "M,yy",
        })
        $("#endDate").datepicker({
                    changeMonth : true,
                    changeYear : true, 
                    dateFormat : "M,yy",
        })  

これはAJAX関数呼び出しです:

function addUserExp(){
        var title = document.getElementById('title').value;
        var startDate = document.getElementById('startDate').value;
        var endDate = document.getElementById('endDate').value;
        var description = document.getElementById('description').value;
        var str = "title="+title+"start="+startDate+"end="+endDate+"desc="+description;
        var req = getXMLHTTP();

        if(req){

            req.onreadystatechange = function(){
                if (req.readyState == 4) {
                    // only if "OK"
                    if (req.status == 200) {                        
                        document.getElementById('addNewExp').innerHTML=req.responseText;    


                    } else {
                        alert("There was a problem while using XMLHTTP:\n" + req.statusText);
                    }
                }
            }
        }
        req.open("post", "addExperience.php", true);
        req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        req.send(str);
    }

問題はAJAX呼び出しにあると思われます。おそらく、「str」変数に関係している可能性があります。

4

3 に答える 3

1

私はあなたのコードをテストしていませんが、次のようにすべきではありません。

 var str = "title="+title+"&start="+startDate+"&end="+endDate+"&desc="+description;
于 2013-02-03T16:42:10.627 に答える
0

私のコードを数え切れないほどレビューした後、私はついに私のPHPコードが問題のある場所にあることに気づきました。

前:

   <?php


$title = $_POST['title'];
$startDate = $_POST['startDate'];
$endDate = $_POST['endDate'];
$description = $_POST['desc'];

echo $title;
echo $startDate;
echo $endDate;
echo $description;

?>

以降:

    <?php


$title = $_POST['title'];
$startDate = $_POST['start'];
$endDate = $_POST['end'];
$description = $_POST['desc'];

echo $title;
echo $startDate;
echo $endDate;
echo $description;

?>

$post変数が私のJS文字列を反映していないことに注意してください。

助けてくれたすべての人に感謝します。

于 2013-02-04T14:43:23.460 に答える
-1

jQueryを使用してAJAXリクエストを処理する方がはるかに簡単です。

function addUserExp(){
        var title = document.getElementById('title').value;
        var startDate = document.getElementById('startDate').value;
        var endDate = document.getElementById('endDate').value;
        var description = document.getElementById('description').value;
        $.post("addExperience.php", { "title": title, "start": startDate, "end": endDate, "desc":description })
        .done(function(data) {
            document.getElementById('addNewExp').innerHTML=data; 
        })
        .fail(function() { 
            alert("There was a problem with request."); 
        });         
    }

$ .postの詳細については、こちらをご覧ください。

于 2013-02-03T16:50:23.327 に答える