1

私は正常に動作するjsファイルを持っていました

$(document).ready( function() {
    $(".btn-save").click( function() {
        var1 = $("#var1").val();
        var2 = $("#var2").val();
        var3 = $("#var3").val();
        var4 = $("#var4").val();
        var5 = $("#var5").val();

        $.post("json.test.php",
            {
                "var1" : var1,
                "var2" : var2,
                "var3" : var3,
                "var4" : var4,
                "var5" : var5
            },
            function(data)
            {
                if(data.type == "success") {
                    if(data.data == "saved") {
                     ...
                   }
                    self.close();
                }
                if(data.type == "error") {
                    alert("Error: " + data.message);
                }
            },
            "json"
        );

    });
});

正常に動作し、スクリプト json.test.php は 5 つの変数すべてを次のように受け取ります。

@$var_php = $_POST["var1"];

ここで、フォームに別のフィールドを追加し、javascript js プログラムに追加するだけです

var6 = $("#var6").val(); 

として投稿

"var5" : var5

これらの変更を行った後、Safari ではプログラム json.test.php は 6 つの変数すべてを正常に受け取りますが、Firefox 11 では正しい値を持つ最初の 5 つの変数のみを受け取りますが、var6 の場合は常に Null を受け取ります。

Firefox 11 ではなく Safari で正常に動作する理由を知っていますか?

4

1 に答える 1

0

Firefox 11 でエラーを再生成することはできませんでしたが、フォームの値をシリアル化することで回避できる場合があります。少なくとも、フォーム入力を扱っている場合は、はるかに優れたアプローチです。

<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready( function() {
    $("#myform").submit(function(event) {
        event.preventDefault(); //Prevents refreshing page on form submit
    $.post("test.php", $("#myform").serialize(),
       function(data) {
          $('#target').html(data);
       });
        });
    });
</script>
</head>
<body>
<form id="myform">
<input type="text" id="var1" name="var1" size="1" maxlength="1" />
<input type="text" id="var2" name="var2" size="1" maxlength="1" />
<input type="text" id="var3" name="var3" size="1" maxlength="1" />
<input type="text" id="var4" name="var4" size="1" maxlength="1" />
<input type="text" id="var5" name="var5" size="1" maxlength="1" />
<input type="text" id="var6" name="var6" size="1" maxlength="1" />
<input type="submit" value="Submit" />
</form>
<div id="target">
</div>
</body>
</html>

そしてtest.php:

<?php
for ($i=1; $i<=6; $i++){
   echo $_POST["var".$i];
} 
?>
于 2012-04-15T03:43:09.243 に答える