2012-01-08 7 views
1

私はポストコールをしていて、いくつかのif/elseステートメントを通して動的に送信するパラメタを設定したいと思います。次の単純化されたバージョンは機能しませんが、 '{postvars}'を '{n:n}'に変更すると、投稿変数を動的に設定するにはどうすればよいですか?

<html> 
<head> 
<title></title> 
<script type="text/javascript" src="jquery-1.7.1.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 

    $("#clicky").click(function() { 
    var postvars; var mydata; 
    var n = 'dave'; 
    postvars = 'n: ' + n; 

     $.post("test.php", 
    {postvars}, 
     function(data){ 
      }, 
     "text" 
     ); 

$("#test").text(postvars); 

    }); 
    }); 
</script> 
</head> 
<body> 

<div id='clicky'>click here</div> 
<div id='test'></div> 

</body> 


</html> 

答えて

0

{postvars}はオブジェクトinitalizerとしてJavaScriptに理解されるであろう、とだけpostvarsのようにエラーうオブジェクト自体の属性/値を設定できない文字列。

{N:n}が、しかし、それはjQueryのAJAX機能がいずれかの名前と値のペアの文字列を取る

名前と値を与えるようinitalizer適切なオブジェクト、

$.post("test.php", 
     "data=somedata&moredata=thisdata", 
     function(data){ 
     }, 
     "text" 
); 

またはJSONオブジェクトは、

あります
var newData = "Some new data"; 
var data = { 
    "dataname":"datavalue"; 
}; 

//add dynamic variables to object 
data["newData"] = newData; 

$.post("test.php", 
     data, 
     function(data){ 
     }, 
     "text" 
); 
1

このようにしてみてください、equivelentされていない

// define an empty object 
var data = { }; 

var variableName = 'n'; 
var variableValue = 'dave'; 

// assign properties of the data object dynamically 
data[variableName] = variableValue; 
... 

、その後、あなたが動的に構築されてきたこのdata変数投稿:{postvars}と{nが}

$.post("test.php", data, function(result) { 
    alert(result); 
}, "text"); 
0

フォームの変数を取得する場合は、serialize()関数を使用してパラメータ文字列を取得できます。 http://api.jquery.com/serialize/

あなたがオブジェクトからパラメータ文字列を取得したい場合は、$.param()機能を使用する必要があります。このよう http://api.jquery.com/jQuery.param/

function someFunc() { 
    var obj=new Object(); 
    obj.n=1; 
    obj.str="Hello!"; 

    var dataStr=$.param(obj); 
    //dataStr is now "n=1&str=Hello!" 
} 
関連する問題