【发布时间】:2011-10-03 03:24:02
【问题描述】:
我正在构建一个 php 程序来从网站获取 3 个变量并计算它们然后发布结果,我可以读取变量,计算它们,但发布部分对我来说很难,因为它使用 Ajax 表单(我认为) 是否可以使用 XMLhttprequest 使用 php 发布?
这是提交按钮:
<a href="#" class="formSubmit" tabindex="3">
这是消息框:
<textarea name="message" id="messageContent" rows="18" wrap="virtual" tabindex="2"></textarea>
我试过像普通表单一样处理它,但它不起作用,我追踪了 ajax 函数来发布:
function formSubmitFunction(e,action, target){
e.stopPropagation();
e.preventDefault();
if ($("#messageContent").attr("value") == undefined || $("#messageContent").attr("value").length < 2){
alert("A mensagem precisa ter no mÃnimo 2 caracteres.");
$("#messageContent").focus();
return false;
}else {
$("#formSubmit").html('<img src="http://website.com/'+desTheme+'/images/send_post.gif');
if(action == "post"){
$("#formAjax").append('<div id="carregando"></div>');
PostFunctions.insertPost(topicId,$("#messageContent").val(), callbackInsertPost);
} else {
var postId = target.replace("#","");
$("#formAjax").append('<div id="carregando"></div>');
PostFunctions.editPost(postId,$("#messageContent").val(), callbackEditPost);
}
return false;
}
}
帮助
@编辑:
找到另一个 insertPost 函数
function callbackInsertPost(response){
var result = eval("("+response+")");
if($("#popup").length){
$("#popup").remove();
}
if(!result.error){
var returnMessage = "";
if(result.isForumModerated){
returnMessage = '<div id="popup" class="autoClear simple">'
+'Sua mensagem está aguardando a aprovação da moderação.'
+'</div>';
$("#carregando").remove();
$(actualPostId).prepend(returnMessage);
window.setTimeout(function(){
$("#popup").fadeOut("slow", function(){
$("#popup").remove();
});
},5000);
$("#formAjax").remove();
} else {
//console.log(result);
window.setTimeout(function(){
document.location = "_t_lastpost_"+topicId+"_"+forumId+"?postId="+result.postId;
},1500);
/*returnMessage = '<div id="popup" class="autoClear simple">'
+'Mensagem enviada com sucesso! Clique neste <a href="_t_lastpost_'+topicId+'_'+forumId+'">link</a> para ver sua mensagem'
+'</div>';*/
}
} else {
if(result.nickname_reproved){
document.location = "changenickname.jbb";
} else {
$("#carregando").remove();
for(i = 0; i < result.messages.length; i++){
$("#formAjax").prepend('<div id="popup" class="autoClear error-post">'
+result.messages[i]+'<br/>'
+'</div>');
}
$.scrollTo("#popup",500);
$("#formSubmit").html('<a href="#" class="formSubmit" tabindex="3"><img src="'+baseImages+'/themes/'+desTheme+'/images/pm_send.gif"/></a>');
$(".formSubmit").bind("click",function(e){
formSubmitFunction(e,"post")
});
}
}
}
@edit2:
PostFunctions.insertPost = function(p0, p1, callback) {
DWREngine._execute(PostFunctions._path, 'PostFunctions', 'insertPost', p0, p1, callback);
}
【问题讨论】:
-
看起来您正在使用 jquery,但实际的
post函数位于PostFunctions对象中。您需要显示该部分的代码并解释问题到底是什么。 -
找到它,在主帖上编辑,问题是:我不能使用 curl 发布新消息,因为提交按钮使用的是 ajax,我可以使用 PHP 吗?
-
@André Cardoso,您绝对可以使用 cURL 发帖。 AJAX 没什么特别的......它只是普通的 HTTP 和其他任何东西一样。
-
不是,你刚刚添加了发帖成功后调用的回调函数。
-
这是我可以在源代码上跟踪的最后一个函数,添加到 @edit2
标签: php ajax forms html-parsing