2012-11-06 21 views
0

我的帖子是這樣的:應該發佈到特定的URL;相反,我看到一個GET爲「/」

var $postResults = $.ajax({ 
    url: "product/create/setting", 
    type: "POST", 
    async: false, 
    data: { KEY: "datasource.name." + dsname, CLASS: dsclass, URL: dsurl }, 
     complete : function (xhr, textStatus) { 
       console.log(xhr.responseText); 
       return xhr.responseText; 
      } 
}); 
return $postResults.responseText; 

然而,當我監控實際發生的情況,這說明在頭一個GET,以「/」,而不是一個URL 「產品/創建/設置」。

我向同事展示了它,他們說:「看起來提交按鈕正在拒絕你的現實,而代之以自己的提交功能。」

有關如何更好地排除故障的任何想法?

編輯

下面是完整的功能(這是$內(文件)。就緒)

function createEnvironmentPrep() { 
    $('#createEnvironment').click(function() { 
     $('div.zForms').html(''); 
     $('<div class="home-panel">' + 
      '<h2 class="home-panel-header">Create New Environment</h2>' + 
       '<form id="submitNewEnvironment">' + 
        '<label class="createlabel" for="envname">Name</label>' + 
        '<input id="envname" name="envname" type="text" size="25" required /><br />' + 
        '<label class="createlabel" for="envpath">Path</label>' + 
        '<input id="envpath" name="envpath" type="text" size="75" /><br />' + 
        '<input id="envsubmit" name="envsubmit" type="submit" class="submit" />' + 
       '</form>' + 
       '</div>' + 
       '<div id="returnmsg"></div>').appendTo('div.zForms'); 
     $('#envsubmit').click(function(e) { 
      e.preventDefault(); 
      var $inputs = $('#submitNewEnvironment :input'); 
      var values = {}; 
      $inputs.each(function() { 
       console.log($(this)); 
       values[this.name] = $(this).val(); 
      }); 
      var reqStatus = createEnvironment(values["envname"], values["envpath"]); 
       if (reqStatus === "Setting Updated") { 
        window.location.reload(); 
       } else { 
        $("#returnmsg") 
         .text(reqStatus) 
         .css("display", "block"); 
        return this.revert; 
       } 
     }); 
    }); 
    function createEnvironment(envname, envpath) { 
     var $postResults = $.ajax({ 
      url: "zforms/create/setting", 
      type: "POST", 
      async: false, 
      data: { KEY: "report.environment." + envname, NAME: envname, PATH: envpath }, 
       complete : function (xhr, textStatus) { 
         console.log(xhr.responseText); 
         return xhr.responseText; 
        } 
     }); 
     return $postResults.responseText; 
    } 
} 

從我可以告訴,點擊功能的內部分配爲$( '#envsubmit')在頁面加載時發生,而不是在單擊「創建環境」按鈕並插入HTML時。因此,沒有點擊功能分配給提交按鈕,它的行爲違反了默認行爲。

+2

使用['event.preventDefault()'](http://api.jquery.com/event.preventDefault/)提交處理。 –

+0

我喜歡你的同事 - *拒絕你的現實並代之以自己的*。 –

+1

我使用這段代碼在http://jsfiddle.net/N4psS/2/中創建了一個jsFiddle。它適用於我在Chrome中的正常工作(我獲得了一個POST給定的路徑)。你正在使用哪種瀏覽器? – alnorth29

回答

3

你可能錯過了event.preventDefault();,表單提交自己。 使用這個代替:形式

$('form').submit(function (e) { 
    e.preventDefault(); 
    // whatever you want to do after submit(); 
}) 
+0

啊,我沒有。我會嘗試的。 – hewhocutsdown

+0

沒有工作,但我懷疑我沒有提供足夠的上下文。我會修改上面的問題。 – hewhocutsdown

相關問題