0

">から1を引くことを示すために、ajaxリクエストに何かを追加する必要があります。現在、私のajaxは">の値に1を加えるだけで、同じ関数で">から1を引く必要があります。 JSONでそれを行いますが、それをこのスクリプトに組み込む方法がわかりません...誰かがそれがどのように素晴らしいかを正確に教えてくれるなら...私のコードはひどくずさんなことを知っています....我慢してください...

ところで、私はajaxが実際に何かを足したり引いたりしておらず、それがクライアントのためにそれを示しているだけであり、私の問題を表現するためのより良い方法を知らなかったことを知っています

general.js

$(".vote").click(function() 
{

var id = $(this).attr("id");
var name = $(this).attr("name");
var eData = $(this).attr("data-options");
var dataString = 'id='+ id + '&' + eData ;
var parent = $(this);


if(name=='up')
{

$(this).fadeIn(200).html('');
$.ajax({
type: "POST",
url: "up.php",
data: dataString,
cache: false,

success: function(data) { $('#total_' + parent.attr("id")).text(data); }
});

}
else
{

$(this).fadeIn(200).html('');
$.ajax({
type: "POST",
url: "down.php",
data: dataString,
cache: false,

success: function(data) { $('#total_' + parent.attr("id")).text(data); }

});


}

});

これがindex.phpです

<div id="main">
<div id="left">
<span class='up'><a title="vote_down_" id="vote_up_<?php echo $mes_id1; ?>" class="vote" name="up" data-options="key1=<?php echo $mes_id1;?>&key2=<?php echo $mes_id2;?>&key3=<?php echo $totalvotes1;?>&key4=<?php echo $totalvotes2;?>"> <img src="up.png" alt="Down" /></a></span><br />
<span id="total_vote_up_<?php echo $mes_id1; ?>"><?php echo $totalvotes1; ?></span><br />
</div>
<div id="message">
<?php echo $message1; ?>
</div>
<div class="clearfix"></div>
</div>
<div id="main">
<div id="right">
<br />
<span id="total_vote_down_<?php echo $mes_id2; ?>"><?php echo $totalvotes2;?></span><br />
<span class='down'><a id="vote_down_<?php echo $mes_id2; ?>" class="vote" name="down" data-options="key1=<?php echo $mes_id1;?>&key2=<?php echo $mes_id2;?>"><img src="down.png" alt="Down" /></a></span>
</div>
<div id="message">
<?php echo $message2; ?>
</div>
<div class="clearfix"></div>
</div>

ここにup.phpがあります

<?php

session_start();
include("config.php");

$ip=$_SERVER['REMOTE_ADDR']; 

$mes_id1 = $_POST['key1'];
$mes_id2 = $_POST['key2'];
$totalvotes1 = $_POST['key3'];
$totalvotes2 = $_POST['key4'];
$new_totalvotes1 = $totalvotes1 + 1;
$new_totalvotes2 = $totalvotes2 - 1;

$ip_sql=mysql_query("select ip_add from Voting_IP where mes_id_fk='$mes_id1' and ip_add='$ip'");
$count=mysql_num_rows($ip_sql);

$ip_sql2=mysql_query("select ip_add from Voting_IP where mes_id_fk='$mes_id2' and ip_add='$ip'");
$count2=mysql_num_rows($ip_sql2);


// if the user has already voted, execute script
if($count==0 && $count2!=0)
{
$sql = "update Messages set totalvotes=totalvotes+1  where mes_id='$mes_id1'";
mysql_query( $sql);

$sql_in = "insert into Voting_IP (mes_id_fk,ip_add) values ('$mes_id1','$ip')";
mysql_query( $sql_in);

$sql = "update Messages set totalvotes=totalvotes-1  where mes_id='$mes_id2'";
mysql_query( $sql);

$sql_in = "DELETE FROM Voting_IP WHERE mes_id_fk='$mes_id2'";
mysql_query( $sql_in);

echo $new_totalvotes1;

// if the user has not voted, execute script
}
else if($count==0 && count2==0)
{
$sql = "update Messages set totalvotes=totalvotes+1  where mes_id='$mes_id1'";
mysql_query( $sql);

$sql_in = "insert into Voting_IP (mes_id_fk,ip_add) values ('$mes_id1','$ip')";
mysql_query( $sql_in);

echo $new_totalvotes1;

}
?>

down.phpはup.phpと同じですが、値が逆になっています

4

1 に答える 1

1

JSONでエンコードされたデータを返したい場合は、-json_encodeを使用echo json_encode($array);ます

javascriptの最後に、jQueryを使用している場合は、jQuery.parseJson()を使用します。

jQueryを使用していない場合は、JSON.parse(xmlhttp.responseText)を使用できます。

編集

OPは、実際のjson_parseの例を要求しました。 http://jsfiddle.net/mxaP6/1/jQueryでJSONを解析する実用的な例です。実際のアプリケーションでは、jQuery.parseJSON()の文字列を、jsonデータを含むサーバーから返された文字列に置き換えます。

parse_jsonで配列を送信するよりもデータを返すためのより良い方法は、オブジェクトを作成することです。次に例を示します。

data.php

$data = new stdClass();
$data->name = "John";
$data->age = 24;
echo json_encode($data);

これにより、jsonは次のようになります。

{"name":"John","age":24}

これは、javascriptオブジェクトに解析されます。jsFiddleにサンプルデータを含めました

于 2013-02-22T04:52:13.327 に答える