0

値を送受信するにはどうすればよいですか?

私が間違っているのは何ですか?

jQuery:保存ボタンのクリック時

$("#budget_submit").click(function(){       
        var budget = $("#budget_cardno").val();
        $.ajax({
            type: 'POST',
            dataType: "json",
            url: 'budget.php',
            data: budget,
            success: function(data){
                if(data.success == true)
                alert(data.message);
        }
        });
    });

html:

<form method="post" id="budgetform">
   <fieldset>
      <ul>
    <li>
      <label>CARD NUMBER</label>
      <input name="budget_cardno" id="budget_cardno" />
    </li>
    <li>
      <label>MONTHLY BUDGET</label>
      <input name="budget_monthly" id="budget_monthly" />
    </li>
    <li>
      <input class="submit" id="budget_submit" name="budget_submit" type="submit" value="Save"/>
        </li>
      </ul>
   </fieldset>
</form>

Php:

<?php 
$dbhost = '#';
$dbuser = '#';
$dbpass = '#';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
    die('Could not connect: ' . mysql_error());
}

$cardNo = $_POST['budget'];     #This statement does not work.
if($cardNo == "")
{
    mysql_close($conn);
    $data = array('success' => true, 'message' => 'ENTER DETAILS');
    echo json_encode($data);
}

else
{
}
?>

value Budget を PHP ファイルに送信して $cardNo に保存し、メッセージを返すにはどうすればよいですか?

データベースからのデータが必要かどうかを確認する他の条件があるため、クライアント側で条件を確認したくありません。

4

2 に答える 2

1

実際、これは私には奇妙に思えます。

if($cardNo == "")
{
    mysql_close($conn);
    $data = array('success' => true, 'message' => 'ENTER DETAILS');
    echo json_encode($data);
}

これは、値が EMPTY の場合にのみトリガーされます。したがって、値を送信しても、ステートメントが false であるためトリガーされません。== を != に変更して、次のように記述します: $cardNo IS NOT EMPTY の場合:

if($cardNo != "")
{
    mysql_close($conn);
    $data = array('success' => true, 'message' => 'ENTER DETAILS');
    echo json_encode($data);
}
于 2012-11-18T03:03:25.537 に答える
1

問題は、実際には JSON を送信しているときに、受信データを通常の形式として扱っていることだと思います。したがって、PHP は「budget」という名前の $_POST パラメータを見つけられません。

を使用して生の投稿データを取得し、それをオブジェクトに変換するためにfile_get_contents('php://input');使用する必要があります。json_decode()そこからbudgetパラメータを取得できます。

したがって、次のようなものが機能するはずです。

$formdata = file_get_contents('php://input');
$formdata_obj = json_decode($formdata);

$cardNo = $formdata_obj->budget;

実際に 1 つの値を送信するだけの場合 (そうしているように見えます)、最初の行だけで十分かもしれません。これは、データ全体が JSON でエンコードされたオブジェクトではなく、値自体になるためです。

$cardNo = file_get_contents('php://input');
于 2012-11-18T03:06:52.250 に答える