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
{
}
?>

如何将价值预算发送到 PHP 文件并将其存储在 $cardNo 中并返回消息?

我不想在客户端检查条件,因为我有其他条件来检查哪些需要数据库中的数据。

4

2 回答 2

1

实际上这对我来说似乎很奇怪。

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

仅当值为 EMPTY 时才会触发。因此,如果您发送一个值,它不会触发,因为该语句是错误的。将您的 == 更改为 != 所以它声明:如果 $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 没有找到任何名称为“预算”的 $_POST 参数。

您需要使用获取原始帖子数据file_get_contents('php://input');,然后使用json_decode()将其转换为对象。然后,您可以从中获取budget参数。

所以这样的事情应该有效:

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

$cardNo = $formdata_obj->budget;

如果您实际上只是发送一个值(正如您似乎正在做的那样),那么仅第一行就足够了,因为整个数据将是值本身而不是 JSON 编码的对象:

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