2016-12-02 5 views
0

私はこのコードを持っており、mysqlデータベースに挿入する2つの値をテストしている間は何も挿入しません。値が混ざっているのですか、コードにエラーがありますか?ワンプサーバーを使用する。発生する以下のエラー。ajaxフォームを使ってテーブルに挿入する

Undefined index: name in C:\wamp\www\info.php on line 3 
Undefined index: desc in C:\wamp\www\info.php on line 4 

しかし、私は値で遊んでみて、それを理解することができませんでした。

index.htmlを

<html> 
<head><title></title></head> 
<body> 

<form id="myForm" action="userInfo.php" method="post"> 
Name: <input type="text" name="name" /><br /> 
Age : <input type="text" name="age" /><br /> 
<button id="sub">Save</button> 
</form> 

<span id="result"></span> 

<script src="jquery-1.8.1.min.js" type="text/javascript"></script> 
<script src="my_script.js" type="text/javascript"></script> 
</body> 
</html> 

userinfo.php

<?php 
     include_once('db.php'); 

     $name = $_POST['name']; 
     $age = $_POST['age'];     
     if(mysql_query("INSERT INTO user VALUES('$name', '$age')")) 
      echo "Successfully Inserted"; 
     else 
      echo "Insertion Failed"; 
?> 

のMyScript一部

$("#sub").click(function() { 
$.post($("#myForm").attr("action"), 
     $("#myForm :input").serializeArray(), 
     function(info){ $("#result").html(info); 
    }); 
}); 
$("#myForm").submit(function() { 
    return false; 
}); 

function clearInput() { 
    $("#myForm :input").each(function() { 
     $(this).val(''); 
    }); 
} 

更新:はまだありません修正。エラーを取得する:

Notice: Undefined index: name in C:\wamp\www\userInfo.php on line 4 

Notice: Undefined index: age in C:\wamp\www\userInfo.php on line 5 
Insertion Failed 
+1

**危険**:あなたが使用している[** OBS PHPから削除された(http://php.net/manual/en/mysql.php)[olete ** database API](http://stackoverflow.com/q/12859942/19068) [現代的な代替品](http://php.net/manual/en/mysqlinfo.api.choosing.php)を選択する必要があります。あなたは** [SQLインジェクション攻撃](http://bobby-tables.com/)**に対して脆弱です**現代のAPIは、[防御]を容易にします(http://stackoverflow.com/questions/60174/最良の方法からSQLへのPHPインジェクション)をあなた自身から守ってください。 – Quentin

+0

1. HTMLコードで一重引用符と二重引用符を混同しないでください(整理のため)。 2.廃止予定の 'mysql_ *'関数を使用しないでください(代わりにMySQLi/PDOを使用してください)。 3. SQLインジェクション攻撃に注意してください。 – Raptor

答えて

-1

使用しているJavaScriptコードを共有できますか?アヤックスの電話を見ることなく、手助けするのは難しいです。

私の2セントは、Firebugまたはネイティブブラウザのネットワークトラフィックウォッチャーを使用して、サーバーに送信するヘッダーをチェックします。 Ajaxリクエストを実行すると、すべてのポストパラメータを渡すことが確実になります。

また必ずあなたのAjaxリクエストはタイプPOSTであり、あなたが同じように、あなたの$ .postコールのデータフィールドを充填しています

$.post('url_here', { "name": "form_name_value here", "desc" : "desc_for_value_here" }) 

UPDATE serializeArrayターゲットのみフォーム要素についてhttps://api.jquery.com/serializeArray/

同様:

$("#myForm").serializeArray() 
+0

がmyscriptを追加しました、ごめんね –

+0

シリアル化配列の場合、フォームのみをターゲットにする必要があります:https://api.jquery.com/serializeArray/ –

+0

なぜdownvoteですか? –

関連する問題