Es gibt zwei Probleme.
Zuerst kann onclick
nur Funktionen aufrufen, die sich im globalen Gültigkeitsbereich befinden. Ihre Funktion ist innerhalb von $(document).ready()
definiert, also nicht im globalen Gültigkeitsbereich.
Zweitens definieren Sie die Funktion mithilfe eines benannten Funktionsausdrucks. Der Geltungsbereich dieses Namens ist nur der Rumpf der Funktion selbst. Siehe Why JavaScript function declaration (and expression)?
Da Sie die Funktion von onclick
aufrufen, müssen Sie sie nicht in $("#comq").click()
oder $(document).ready()
einfügen.
Definieren Sie es einfach als eine normale Funktion im globalen Bereich. Und da Sie es als zweites Argument mit $d['qid']
aufrufen, müssen Sie in der Funktion nicht qid
zuweisen. Sie brauchen auch nicht das Argument event
, da Sie es nie in der Funktion verwenden (es wurde nur vorher benötigt, weil Sie die Funktion von $("#comq").click()
aufgerufen haben).
Sie können nicht dieselbe ID mehrmals verwenden, ein Selektor für die ID findet nur das erste Element mit dieser ID, nicht das neben der Schaltfläche. Übergeben Sie die Schaltfläche als ein weiteres Argument an die Funktion, und verwenden Sie das, um das Kommentarfeld neben es zu erhalten.
HTML:
<div id="comments" class="cmt" >
<img width="30px" height="30px" src="/cropphoto/<?php echo getuserPhoto($d['uid']); ?>">
<input class="commentbox" name="comments" placeholder="Comment Here" maxlength="50" >
<button type="button" name="compost" onclick="my(<?php echo $d['qid'];?>, this);" class="butn2" >post comment</button>
</div>
JS:
function my(qid, button) {
var comment = $(button).siblings(".commentbox").val();
alert(qid);
$.ajax({
cache: false,
type: "post",
url: "jquery.php",
data: {
comments: comment,
qid: qid
},
success: function(data) {
$("#comment").val("");
$("").html(data);
}
});
}
Hier ist ein ausführbarer Code-Schnipsel, die es ohne AJAX demonstriert:
function my(qid, button) {
var comment = $(button).siblings(".commentbox").val();
console.log("id = " + qid, " comment = " + comment);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="comments" class="cmt">
<img width="30px" height="30px" src="/cropphoto/<?php echo getuserPhoto($d['uid']); ?>">
<input class="commentbox" name="comments" placeholder="Comment Here" maxlength="50">
<button type="button" name="compost" onclick="my(1, this);" class="butn2">post comment</button>
</div>
<div id="comments" class="cmt">
<img width="30px" height="30px" src="/cropphoto/<?php echo getuserPhoto($d['uid']); ?>">
<input class="commentbox" name="comments" placeholder="Comment Here" maxlength="50">
<button type="button" name="compost" onclick="my(2, this);" class="butn2">post comment</button>
</div>
wo die – Gardezi
meine Funktion ist mir Ajax @Gardezi finden Sie wissen, was ich Fehler habe ich in Ajax bin hier, jquery –
YEs ich es sah. Du rufst eine Funktion an onclick = 'onclick = "my (event, Php echo $ d [' qid '];?>);" '. Aber ich sehe es nirgends definiert – Gardezi