2014-07-05 116 views
0

首先,我希望我對jQuery不夠熟悉,因爲我很少使用它。當我嘗試使用$ .ajax()函數但在使用$ .post()時完美地工作時,我有以下代碼顯然不起作用。我相信這可能與我在1.8之前學習jQuery的事實有關,我幾乎沒有研究過任何$ .ajax函數,並且從那以後我一直沒有使用它。

在ajax.php我有虛擬文本,看看是否ajax.php正在響應

檢查API文檔後,它似乎有點混亂對所提供的信息量是壓倒性的。

如果有人可以看看我的代碼,並指出我可能出現的錯誤並提出解決方案,我將不勝感激。

爵士小提琴來源:http://jsfiddle.net/user16arts/Xuk66/

HTML:

<form method="post" action="ajax.php"> 
<input type="text" name="name" value="name" defVal="name" maxlength="16"> 
<input type="submit" value="submit"> 
<p class="submitErr"></p> 

的jQuery:

$(document).ready(function() { 
$('body').fadeIn(300); 

$('input').focusin(function() { 
    if ($(this).val() == $(this).attr('defVal')) { 
     $(this).val(''); 
    } 
}).focusout(function() { 
    if ($(this).val() === '') { 
     $(this).val($(this).attr('defVal')); 
    } 
}); 

$('form').submit(function (e) { 

    var inputField = $(this).find('input[type="text"]'); 
    if ($(inputField[0]).val() == $(inputField[0]).attr('defVal')) { 

     var err_element = $(this).find('p.submitErr'); 
     $(err_element).html('ERROR::INVALID SUBMIT VALUE!').click(function() { 
      $(this).hide(); 
     }).fadeIn(300).delay(3000).fadeOut(300); 

    } else { 

     $.ajax({ 
      url: $(this).attr('action'), 
      data: '1=1', 
      type: 'POST', 

      statusCode: { 
       404: function() { 
        alert('ajax:: error 404!'); 
       } 
      }, 

      complete: function() { 
       $('div.content').fadeIn(300); 
      }, 

      sucess: function (data) { 
       $('div.content').html(data); 
      }, 

      error: function() { 
       alert('ajax error'); 
      } 
     }); /* END OF $.ajax */ 

    } 

    e.preventDefault(); 
}); 
}); 
+0

你想用'data:'1 = 1''部分做什麼? – Burak

+0

所以我可以在ajax.php中測試是否設置了變量。我不確定是否正確發送$ _post。 – user3111896

+0

'e.preventDefault()'不是'return false'的直接替代/替代。換句話說,'preventDefault'在函數的頂部而不是在底部,以防止在函數的其餘部分運行時立即停止默認操作。請參閱示例:http://api.jquery.com/event.preventdefault/ – Sparky

回答

2

你的問題是成功的一部分,你有一個錯字錯誤。

改變這一點:

sucess: function (data) { 
    $('div.content').html(data); 
}, 

到:

success: function (data) { 
    $('div.content').html(data); 
}, 

而且不知道什麼是位於你ajax.php一部分,但如果你的目的是要發出一個變量1的值爲1,然後附加響應,在你的ajax.php中這樣做:

$value = $_POST['1']; 
echo $value; 
+0

現在這是令人尷尬的。我再次檢查了拼寫兩次,檢查了操作語法,檢查了手冊並檢查了Chrome的控制檯是否有任何錯誤。謝謝你,對於一個非常愚蠢的錯誤感到抱歉。正如我的教授曾經說過的,這種錯誤發生在最好的狀態。 – user3111896

+0

大家都會犯錯誤,無後顧之憂。 – Burak