2013-02-06 58 views
0

Java腳本的語法錯誤的Javascript功能

$('#senurl').click(function() { 

    $.ajax({ 
     type: "POST", 
     url: "/Admin/Coupon1/Reject", 
     dataType: "json", 
     data: "id="[email protected]+"&url="[email protected] 

    }); 
}); 

ReferenceError: Expired is not defined
[Break On This Error]
data: "id="+2925+"&url="+Expired

+0

提供的代碼示例似乎沒問題,錯誤是在其他地方 – 2013-02-06 11:44:43

+0

我看不到您何時使用Expired變量。這是你的完整源代碼嗎? –

+3

問題應該是顯而易見的:'@ url'似乎被'Expired'(由服務器)替代,它似乎不是現有的變量。我假設你想把它當作一個字符串:'+「&url = @ url」'。 –

回答

2

您可能希望(但也請看下面):

$('#senurl').click(function() { 

    $.ajax({ 
     type: "POST", 
     url: "/Admin/Coupon1/Reject", 
     dataType: "json", 
     data: "[email protected]&[email protected]" 

    }); 
}); 

...因爲你要想想什麼瀏覽器看到了,如果@url被服務器替換爲Expired,那麼從錯誤中可以看出瀏覽器看到的代碼是:

data: "id="+2925+"&url="+Expired // <=== What the browser sees with your current code 

更妙的是,讓jQuery的處理任何潛在的URI編碼通過傳遞一個對象,而不是需要:

$('#senurl').click(function() { 

    $.ajax({ 
     type: "POST", 
     url: "/Admin/Coupon1/Reject", 
     dataType: "json", 
     data: {id: @Model.id, url: "@url"} 
    }); 
}); 

如果你不想通過jQuery的對象,讓它處理URI -encoding適合你,那你要自己處理:

data: "[email protected]&url=" + encodeURIComponent("@url") 
-1

我認爲它是因爲@url變量分配數據Expired不帶引號。

+1

這可能會導致相同的錯誤。 –

+0

我認爲它是因爲@url變量被分配了數據Expired without quotes。 –

+0

是的......那麼爲什麼你沒有在你的答案呢? :) –

0

$( '#senurl')點擊(函數(){

$.ajax({ 
    type: "POST", 
    url: "/Admin/Coupon1/Reject", 
    dataType: "json", 
data: "{id:'" + @Model.id + "', 'url': " + @url + "}", 
    success: function (response) { 
    alert(response.d); 
}, 
error: function (data) { 
    alert(data); 
}, 
failure: function (msg) { 

} 
}); 

})。

試試這個工作正常。如果您使用的是網址路由,那麼您可能會遇到其他錯誤。 所以更好地得到響應輸出並檢查..