2

私は検索し、編集し、再編集し、JSLintに見下され、再テストしました。私が知っていることの実際的な限界に達しました。また、問題をより具体的に切り分けるための Firebug やその他のツールの経験がありません。少年を正しい方向に向けます。

問題のあるコードは次のとおりです。

echo '<script type="text/javascript">' . "\n";
echo '$(document).ready(function() {' . "\n";   
echo '$("#' . $row['firstname'] . $row['lastname'] . '").click(function() {' . "\n";
echo '  $.post("http://example.com/publish.php", { fname: "' . $row['firstname'] . '", lname: "' . $row['lastname'] . '", input: "' . $published['input'] . '", table: "' . $q . '" });' . "\n";
echo 'e.preventDefault();' . "\n";
echo 'return false;' . "\n";
echo '     });' . "\n";
echo '});' . "\n";
echo '</script>';

これは、アウトリーチ スキームの一部として html テンプレートを割り当てられた個人の詳細を示す mysql DB からデータを取得する、より大きな while ループの一部です。とりわけ、ループは、コンテンツが Web に公開されているかどうか、またはコンテンツがクエリの一部として残っているだけで、準備ができているかどうかをユーザーに知らせます。未公開の場合は 0、公開済みの場合は 1。上記のスクリプトは、publish.php に UPDATE クエリを実行し、0 を 1 に、またはその逆に変更するように指示することが期待されています。スクリプトを手動でクエリすると、コンテンツが公開され、期待どおりの結果が得られます。

ブラウザ側では、PHP を使用してテーブル内の DB 情報を出力しました。最後の列には、公開または非公開のボタンがあります。

echo "<td><button id='" . $row['firstname'] . $row['lastname'] . "' class='btn btn-small " . $published['UI'] . "'>" . $published['do'] . "</button></td>";

上記のコードは正常に動作するようです。姓と名の融合に基づいて一意の #id を生成し、ボタンにアタッチする適切なクラス (非公開の場合は赤、公開の場合は緑) をエコーし​​、ユーザーが選択した場合に実行するアクションをユーザーに警告します。ボタンを押す。

さて、それはすべて次のものと一緒になるはずです。これは、問題のあるコードであると思われる出力です (最初に投稿したスニペット)。私には甘く見えますが、誰が知っていますか。やっぱり私は素人です。

$(document).ready(function() {
$("#FirstnameLastname").click(function() {
  $.post("http://example.com/publish.php", { fname: "Firstname", lname: "Lastname", input: "1", table: "Tablename" });
e.preventDefault();
return false;
     });
});

私が書く場合:

$.post("http://example.com/publish.php", { fname: "Firstname", lname: "Lastname", input: "1", table: "Tablename" });

コンソールに直接入力して、Tablename のユーザー Firstname Lastname の公開ステータスを 0 から 1 に変更します。ボタンをクリックすると、アドレス バーに無意味な文字列が表示されます。

http://example.com/outreach.php?names=Tablename&names=None

これで何が起きているのですか?

ここまで読んでくれてありがとう。これを理解するのを楽しみにしています!ハハ。

その他の注意事項:

PHP 5.3.x
Jquery is called in the head.
All table names contain a number of dashes - could this be causing the string to turn into rubbish? e.g outreach.php?names=Ta-bl-ena-me&names=None

以下は、outreach.php がテーブル名のリストを要求する方法です。変更すると、これは Ajax として getnames.php に送信され、そこから html/js が outreach.php に (問題ありません) 前述の表の形式で送信されます。これが、私が今、設計図に戻る必要があるかもしれないと考えている理由です...

<?php   while($showtablerow = mysql_fetch_array($showtablequery_result))    {   echo "<option>" . $showtablerow[0]."<br />" . "</option>";  } ?>
4

1 に答える 1

0

さて、これまでのところ、読みやすくするためにコードを少しクリーンアップしました。パラメータの投稿に問題があると思います。それらはURLにも含まれますか?

<script type="text/javascript">
    $(document).ready(function() {
        $("#<?php echo $r['firstname'] . $r['lastname']; ?>").click(function(e) {
        $.post("http://thinknextmedia.com/publish.php", 
            { fname: "<?php echo $r['firstname']; ?>", 
              lname: "<?php echo $r['lastname']; ?>", 
              input: "<?php echo $published['input'] ?>", 
              table: "<?php echo $q ?>" });
        return false;
        });
    });
</script>
于 2012-11-19T03:16:38.793 に答える