-1
$(function(){
  var regex= /^\/t\d-/;
  var a = $('.post')[0];
  var b = $(a).find('.profile-icons')[0];
  var c = $(b).find('.i_icon_edit')[0];
  var testTitle = /^\[COMPLETED\]/i;
  var d = $('.page-title').find('a')[0].innerText;
   if(regex.test(window.location.pathname) && c && !testTitle.test(d)){
   var ahref = c.parentNode.href.replace('http://'+window.location.hostname,'');
   var complete = document.createElement('li');
   complete.id="completed";
   complete.setAttribute('onclick','markComplete("'+ahref+'")');
   complete.innerHTML="Mark Complete";
   b.appendChild(complete);
  }
});
  function markComplete(yhref){
   $.post(yhref,function(data){
     var val = $(data).find('input[name="subject"]').val();
     $(data).find('input[name="subject"]').val('[COMPLETED]'+val);
     $(data).find('input[name="edit_reason"]').val('User Marked Question as Completed');
     $(data).find('form[name="post"]').submit();
   }).done(function(){
   window.location.reload();
  });
 }

实际的代码是有效的,只是不是markComplete我在 Ajax 上讨厌的函数,因为我还没有时间自学这些。我只需要在论坛中更改主题的标题,然后重新加载页面以保存 Ajax 请求。重新加载工作只是不是 Ajax。我已经阅读了 jQuery.com 上的文档,只是还没有完全理解它。谁能帮我完成代码或对 Ajax 的任何建议?

4

1 回答 1

0

Ajax 和“重新加载页面”应该在同一个句子中使用。

很明显,最简单的方法是通过一个新的 PHP“页面”创建一个伪 REST API(我猜你正在使用 PHP,因为你已经提到了一个“论坛”),然后引导数据在那个将“保存”它的“页面”上。

ajax 调用(来自表单所在的页面):

$('#form_name').submit(function(event) { 
  var $form = $( this ),
    form_field_name1 = $form.find( "input[name='form_field_name1']" ).val(),
    form_field_name2 = $form.find( "input[name='form_field_name2']" ).val();

  $.ajax({
    url: 'http://yourserver.com/api.php',
    type: 'POST',
    data: { "form_field_name1": form_field_name1, "form_field_name2" : form_field_name1 },
    beforeSend: function () {
      $("#output").html("Saving, please wait....");
    },
    success: function(data, textStatus, jqXHR) {
      console.log('/API response received:', data);
      var result = new Boolean(data);
      if (result) {
        $("#output").html("Saved.");
      } else {
        $("#output").html("Not saved.");
      }
    },
    error: function(jqXHR, textStatus, errorThrown) {
      console.error(textStatus, errorThrown);
      $("#output").html("ERROR when saving data: " + errorThrown);
    }
  });

  event.preventDefault(); // important, so that the page doesn't reload
});

页面(api.php简而言之):

$form_field_name1 = $_POST['form_field_name1'];
$form_field_name2 = $_POST['form_field_name2'];

mysql_connect("localhost", "user", "pass");
mysql_select_db("db_name");

$query= "INSERT INTO `table_name` (`field_name1`,`field_name2`) VALUES ('" . $form_field_name1 . "','" . $form_field_name2 . "')";
$result = mysql_query($query) or die ("Error in query: $query " . mysql_error()); 

return $result;

进一步阅读:正确的 PHP REST API 指南:http ://coreymaynard.com/blog/creating-a-restful-api-with-php/

于 2013-11-07T22:36:21.563 回答