Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 58

0
votes
answers
9 views
+10

如何獲取點擊元素的ID並存儲在變量中,並在使AJAX調用的函數中使用它

2

我一直試圖從下面的一次點擊函數中刪除這個#static id,並使用變量自動獲取像'#static#dynamic ...等等,並把它放在一鍵功能。這將通過改變它的ID名稱來節省我一次又一次的複製和粘貼相同的功能。此外,這也將使代碼看起來很簡潔&。如何獲取點擊元素的ID並存儲在變量中,並在使AJAX調用的函數中使用它

jQuery(document).ready(function($){ 
// Home Page Static Portfolio Ajax Query 
$(this).one('click', '#static', function(e){ 
    var that = $(this); 
    var id = that.attr('id'); 
    var rel = that.data('rel'); 
    var ajaxurl = that.data('url'); 
    $.ajax({ 
     url : ajaxurl, 
     type : 'POST', 
     data : { 
      rel : rel, 
      action : 'home_filter_' + id + '_portfolios' 
     }, 
     error : function(response){ 
      console.log(response); 
     }, 
     success : function (response){ 
      if (response == '') { 
       $('figure' + id).after('<div class="end_of_testimonial"><h3>You have reached the end of the line</h3><p>No more portfolios to load!</p></div>'); 
      } else { 
       $('.gallery-wrapper').append(response); 
      } 
     } 
    }); 
}); 

任何幫助,將不勝感激:)

+0

如果這不只是使用'。對()',而不是'。一()'...請編輯您的問題。你的問題可以更好地定義。你期望的*幫助*是什麼? –

沙发
0
-2
$(this).one('click', '#static', function(e) 

在這行代碼中,你應該使用類作爲元素的標識符。 「id」是唯一的,它應該只分配給一個元素。

$(body).one('click', '.yourclass', function(e) 

並將該類添加到所需的所有元素。

+0

對不起,最後的代碼是 $(body).one('click','.yourclass',function(e) – mohsinhassan155

+1

改進你的回答:https://stackoverflow.com/posts/47487841/edit。 –

+1

不會因爲使用'one()'單擊任何一個類將會阻止代碼在該類的其他元素上運行 – charlietfl

板凳
0
0

您可以將常用的類添加到所有你想這再次爲更換工作,並使用正on()

添加其他類已被點擊時一個這樣你就不會做出請求one()元素功能

$(function() { 
 
    // better to use `document` instead of `this` for readability 
 
    $(document).on('click', '.my-div', function(e) { 
 
    var that = $(this); 
 
    if (that.hasClass('already-clicked')) { 
 
     // bail out 
 
     console.log('Already clicked') 
 
     return 
 
    } else { 
 
     that.addClass('already-clicked'); 
 
     var data = that.data(); 
 
     data.id = this.id; 
 
     console.log(JSON.stringify(data)) 
 
     // do your ajax 
 
    } 
 
    }); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div class="my-div" id="1" data-rel="rel_1" data-url="url_1">Div one</div> 
 
<div class="my-div" id="2" data-rel="rel_2" data-url="url_2">Div two</div> 
 
<div class="my-div" id="3" data-rel="rel_3" data-url="url_3">Div two</div>

地板
0
2

您可以使用類並調用這種方式AJAX功能。這裏是你的演示代碼。你可以使用盡可能多的id作爲你想要的這個功能。我使用事件文檔來調用該類的每個實例。 Fiddel link

jQuery(document).ready(function($){ 
    // Home Page Static Portfolio Ajax Query 
    $(document).on('click', '.clickclass', function(e){ 
     var that = $(this); 
     var id = that.attr('id'); 
     var rel = that.data('rel'); 
     var ajaxurl = that.data('url'); 
      alert(id); 

    }); 
    }); 
0
votes
answers
19 views
+10

將字典作爲JSON返回並使用JS函數成功訪問它的內容 - C#

0

我有一個Dictionary名爲finalDictionary,它是通過合併多個字典創建的。 這是一段代碼,我用它來創建此詞典:將字典作爲JSON返回並使用JS函數成功訪問它的內容 - C#

Dictionary<string, Dictionary<DateTime, int>> finalDictionary= new Dictionary<string, Dictionary<DateTime, int>>(); 

finalDictionary.Add("Data1", listData1.ToDictionary(x => x.Date, y => y.Value)); 
finalDictionary.Add("Data2", listData2.ToDictionary(x => x.Date, y => y.Value)); 
finalDictionary.Add("Data3", listData3.ToDictionary(x => x.Date, y => y.Value)); 

注:listData1listData2listData3是哪個,我轉換成字典在上面的代碼中所有的匿名名單。

下面是這些字典的樣本格式:(讓我們考慮Data1

Key : 'Data1' 
Value : 
     [0] {[6/14/2015 12:00:00 AM, 1]} 
     [1] {[6/21/2015 12:00:00 AM, 0]} 
     [2] {[6/28/2015 12:00:00 AM, 0]} 
     [3] {[7/5/2015 12:00:00 AM, 0]} 
     [4] {[7/12/2015 12:00:00 AM, 0]} 
     [5] {[7/19/2015 12:00:00 AM, 0]} 
     [6] {[7/26/2015 12:00:00 AM, 0]}  

因此,每個上面的日期是再次Key一部分,這些數字Value一部分。

我回到這個字典即finalDictionary的JSON結果從我控制器方法如下:

return Json(new { Result = "OK", Records = obj.GetDetails()}, JsonRequestBehavior.AllowGet); 

但是,當這種返回到我的調用JS阿賈克斯失敗拋出下面的內部服務器500錯誤:

jqXHR = {readyState: 4, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}, textStatus = "error", errorThrown = "Internal Server Error //and so on 

這裏是我的JS代碼:

function loadDetails() { 

    $.ajax({ 
     type: 'GET', 
     dataType: 'json', 
     contentType: "application/json; charset=utf-8", 
     cache: false, 
     url: _WebRoot() + '/Charts/GetDetails', 
     success: function (response, textStatus, jqXHR) { 
      prepareData(response.Records, 'Text Title'); 
     }, 
     error: function (jqXHR, textStatus, errorThrown) { 
      alert('Error - ' + errorThrown); 
     } 
    }); 
} 

需要進行哪些修改才能使其工作?

注:我收到上面提到的錯誤的數據從控制器返回併到達JS方法

+0

也許我偷懶不讀代碼,但可能有助於因爲http狀態碼500可能是任何東西(引發異常),所以在C#中獲得一些實際異常的日誌記錄。要麼或者共享更多的控制器代碼,以便我們可以嘗試找出它拋出異常的位置。 –

+0

從C#方面來看,沒有任何異常,因爲字典確實從控制器返回而沒有任何錯誤。我想我正在做一些錯誤,無論是在返回的JSON格式或我的JS代碼端的錯誤。 –

+0

500錯誤肯定來自服務器(內部*服務器*錯誤) - 所以'/等等'部分是你看診斷它。 – James

沙发
0
1

轉換的「按鍵」數據類型(「日期」在我的情況)元件後字符串解決了問題。 最初「日期」爲日期時間數據類型

因此,當我從控制器返回我的上述字典作爲JSONResult JS方法拋出一個錯誤,因爲它無法字符串化或序列化此字典。

因此建議改變你的字典的鍵「」元素的數據類型爲字符串它們設置爲對象

這裏的錯誤消息我是能夠調試出(提供此錯誤消息,因爲它可能會幫助誰可能面臨這樣的類似問題的其他的):

Unhandled Exception: System.ArgumentException: Type 'System.Collections.Generic. Dictionary`2[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[ChatData, Test, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' is not supported for serialization/deserialization of a dictionary, keys must be strings or objects. 
22
votes
answers
20 views
+10

How to set a boundary on a multipart/form-data request while using jquery ajax FormData() with multiple files

I have an HTML form that needs to upload 3 parts to an existing REST API in a single request. I can't seem to find documentation on how to set a boundary on a FormData submission.

I've attempted to follow the examples given here: How to send FormData objects with Ajax-requests in jQuery?

However when I submit the data it gets rejected with the following stacktrace:

Caused by: org.apache.commons.fileupload.FileUploadException: the request was rejected because no multipart boundary was found.

How can I set a boundary?

Here is the HTML/Javascript:

   <script type="text/javascript">
    function handleSubmit() {


        var jsonString = "{" +
                ""userId":"" + document.formSubmit.userId.value + """ +
                ","locale":"" + document.formSubmit.locale.value + """ +
                "}";

        var data = new FormData();
        data.append('Json',jsonString);
        data.append('frontImage', document.formSubmit.frontImage.files[0]);
        data.append('backImage', document.formSubmit.backImage.files[0]);

        document.getElementById("sent").innerHTML = jsonString;
        document.getElementById("results").innerHTML = "";
        $.ajax({
                   url:getFileSubmitUrl(),
                   data:data,
                   cache: false,
                   processData: false,
                   contentType: 'multipart/form-data',
                   type:'POST',
                   success:function (data, status, req) {
                       handleResults(req);
                   },
                   error:function (req, status, error) {
                       handleResults(req);
                   }
               });
    }

</script>

Here is the Form:

<form name="formSubmit" action="#">
    userId: <input id="userId" name="userId" value=""/><br/>
    locale: <input name="locale" value="en_US"/><br/>
    front Image: <input type="file" name="frontImage"/><br/>
    back Image: <input type="file" name="backImage"/><br/>
    <input type="button" onclick="handleSubmit();" value="Submit"/>
</form>

Thanks in advance for any help!

up vote 22 down vote accepted favorite
沙发
+220
+50

穆薩的反應非常好。將contentType設置為false確實正確提交了表單數據。謝謝!

這是一個有效的ajax調用:

  $。ajax({url:getFileSubmitUrl(),data:data,cache:false,processData:false, contentType:false,type:'POST',success:function(data,status,req){handleResults(req);},error:function(req,status,error){handleResults(req);}});   

我還發現這段代碼也有效:

  var oReq = new XMLHttpRequest(); oReq.open(“POST”,getFileSubmitUrl()); oReq.addEventListener(“error”,transferComplete); oReq.addEventListener(“load”,transferComplete); oReq。addEventListener(“abort”,transferComplete); oReq.send(數據); } function transferComplete(evt){handleResults(evt.target); }  
     
			
        

為什麼在打開/發送後添加事件監聽器? - Joe Holloway 2016年12月9日18:13

0
votes
answers
25 views
+10

我該如何重寫在shopify .liquid上呈現的數據,並且需要使用Ajax

0

我有一個用例,我想爲Shopify網站實現自定義搜索功能。所以,而不是使用JSONAjax和製作一個HTML和替換HTML。有沒有一種方法可以覆蓋.liquid文件正在使用的search.results數據。我該如何重寫在shopify .liquid上呈現的數據,並且需要使用Ajax

因此,當我在/search?q=xyz中進行搜索時,我想從我的API中獲取數據,並使用該數據來渲染product-item.liquid。這樣我就不用擔心product-item針對不同主題的用戶界面。

沙发
0
0

是的。你可以輕鬆地做到這一點。你會在你的商店安裝一個應用程序,並創建一個你要用你的搜索條件調用的終端。終點由Shopify應用程序代理處理,安全地允許您回調應用程序。你可以返回Liquid作爲結果,或者只是你想要的JSON。這是一個標準和簡單的模式供您使用。

請看這裏:https://help.shopify.com/api/tutorials/application-proxies

+0

是的。我遇到了這種方法。我用這種方法看到的問題是,客戶端將無法控制他的產品項目UI?我正在談論的方法,其中用戶有他們的產品item.liquid和我的應用程序將如何採取,並呈現基於他們的網站的數據。 – rrmerugu

+0

不正確。您可以渲染Liquid作爲迴應,並且客戶可以按照他們認爲合適的方式標記Liquid。例如,匹配你的變量。在寫出來之前進行實驗。而且你錯過了你可以隨時返回JSON的事實。這種模式對你的用例沒有任何問題,你別無選擇。所以去吧。 –

0
votes
answers
17 views
+10

無法從CKEditor的全面檢索PHP文本

1

HTML代碼無法從CKEditor的全面檢索PHP文本

<form name='form' method='post'> 
    <textarea name='ckeditor'></textarea> 
    <input type='submit' name='submit' value='Save' /> 
<form> 

JavaScript代碼

$(document).submit(function(event){ 

event.preventDefault(); 

$editor = CKEDITOR.instances['editor'].getData(); 

//alert($editor); 

    $.ajax({ 
    method: "POST", 
    url : "someurl", 
    data : "full_text="+$editor, 
    success = function (response) { 
     alert(response); 
    } 
    }); 
}); 

PHP代碼

<?php 
    print_r($_POST["full_text"]; 
?> 

當Java腳本內部使用提醒我的全文所示。但是當使用php的print_r函數時,只顯示兩行或三行文本。

如果我有三段文字提示顯示所有三段,但php只顯示兩行。下面是更詳細的圖片

第一張圖片在提交之前顯示javascript內部警報。

第二個圖像顯示從PHP頁面警報響應 alert of textarea inside javascript

alert from ajax

+0

您是否嘗試將包含data =「full_text =」+ $ editor的行更改爲data:{full_text:$ editor}? – msantos

+0

是的,我已經嘗試過。仍然沒有結果。但我發現如果只使用print_r($ _ POST);它顯示全文 – whoknows

沙发
0
0

$.post將是一個簡單的POST請求更容易。

$.post("someurl", {full_text: $editor}, function(response){ 
    alert(response); 
}) 
0
votes
answers
7 views
+10

如何使用php.to發送電子郵件給兩個不同的收件人。和兩個不同的內容

-1

我是初學者到php和ajax。你能幫我一下如何使用php發送郵件。您的幫助將不勝感激。提前致謝。如何使用php.to發送電子郵件給兩個不同的收件人。和兩個不同的內容

以下是我的要求。

登錄用戶的詳細信息交流經銷商和經銷商的內容登錄用戶。

下面的圖像內容應該發送到登錄用戶的詳細信息交流經銷商的電子郵件ID。 enter image description here

+1

我認爲我們需要更多信息。所以你只是想發送一個電子郵件與一些文本到特定的收件人的PHP? –

+0

@DavidGölzhäuser。是的,例如:如果約翰登錄,他看到經銷商的數據。約翰詳細信息需要發送給經銷商的電子郵件..以及數據約翰已經看到,應該需要發送到約翰電子郵件。 –

+0

我希望我的回答對你有幫助! –

沙发
0
0

那麼,用PHP發送郵件很簡單。

從服務器發送到收件人:

$recipient = "[email protected]"; 
$subject = "This is a very important subject"; 
$message = "This is the Email body with your data"; 
mail($recipient, $subject, $message); 

從一個特定的電子郵件發送到收件人

$recipient = "[email protected]"; 
$subject = "This is a very important subject"; 
$message = "This is the Email body with your data"; 
$header = "From: John Doe <[email protected]>"; 
mail($recipient, $subject, $message, $header); 

您可以找到的文檔here

48
votes
answers
11 views
+10

Ajax request returns 200 OK, but an error event is fired instead of success

I have implemented an Ajax request on my website, and I am calling the endpoint from a webpage. It always returns 200 OK, but jQuery executes the error event. I tried a lot of things, but I could not figure out the problem. I am adding my code below:

jQuery Code

var row = "1";
var json = "{'TwitterId':'" + row + "'}";
$.ajax({
    type: 'POST',
    url: 'Jqueryoperation.aspx?Operation=DeleteRow',
    contentType: 'application/json; charset=utf-8',
    data: json,
    dataType: 'json',
    cache: false,
    success: AjaxSucceeded,
    error: AjaxFailed
});
function AjaxSucceeded(result) {
    alert("hello");
    alert(result.d);
}
function AjaxFailed(result) {
    alert("hello1");
    alert(result.status + ' ' + result.statusText);
}

C# code for JqueryOpeartion.aspx

protected void Page_Load(object sender, EventArgs e) {
    test();
}
private void test() {
    Response.Write("<script language='javascript'>alert('Record Deleted');</script>");
}

I need the ("Record deleted") string after successful deletion. I am able to delete the content, but I am not getting this message. Is this correct or am I doing anything wrong? What is the correct way to solve this issue?

沙发
+130

我認為你的aspx頁面沒有返回JSON對象。你的頁面應該做這樣的事情(page_load)

  var jSon = new JavaScriptSerializer(); var OutPut = jSon.Serialize(&lt; your object&gt;); 回复於(輸出);   

另外,嘗試更改AjaxFailed:

 函數AjaxFailed(XMLHttpRequest,textStatus){}   

< code> textStatus 應該為您提供所遇到的錯誤類型。

板凳
+120

我在更新的jQuery庫中面臨這個問題。如果服務方法沒有返回任何內容,則意味著返回類型為 void

然後在您的Ajax調用中請提及 dataType ='text'

它將解決問題。

地板
+70

如果實現的Web服務方法無效,則只需從頭中刪除 dataType:'json'

在這種情況下,Ajax調用不要指望有一個JSON返回數據類型。

4楼
+40

我有同樣的問題。我的問題是我的控制器正在返回狀態代碼而不是JSON。確保你的控制器返回類似的東西:

  public JsonResult ActionName(){//你的代碼返回Json(new {}); }  
     
			
        
5楼
+30

使用以下代碼確保響應採用JSON格式(PHP版本)...

  header('Content-Type:application / json'); echo json_encode($ return_vars); 出口;  
     
			
        
6楼
+30

我有類似的問題,但當我試圖刪除數據類型:'json'我仍然有問題。我的錯誤是執行而不是Success

  function cmd(){var data = JSON.stringify(display1()); $ .ajax({type:'POST',url:'/ cmd',contentType:'application / json; charset = utf-8',// dataType:“json”,data:data,success:function(res) {console.log('成功運行run_id ajax')// $ .ajax({// type:“GET”,// url:“/ runid”,// contentType:“application / json; charset = utf- 8“,// dataType:”json“,//數據:數據,// success:function display_runid(){} //}); },error:function(req,err){console.log('my message:'+ err); }}; }  
     
			
        

我看到了同樣的事情。使用200代碼的空響應仍然會觸發錯誤處理程序。 - Doublejosh 4月30日1:11

7楼
+20

另一件讓我煩惱的事情是使用 localhost 而不是127.0.0.1,反之亦然。顯然,JavaScript無法處理從一個到另一個的請求。

8楼
+20

見到這一點它也有類似的問題。工作我試過。

不要刪除 dataType:'JSON',

注意:如果你只使用php echo你的ajax代碼,只回顯PHP文件中的JSON Formate返回200

9楼
+10

我遇到了同樣的問題。這是因為我的JSON響應包含一些特殊字符,並且服務器文件未使用UTF-8編碼,因此Ajax調用認為這不是有效的JSON響應。

你是怎麼解決的? - Mikael Gyth 18年8月29日11:55

10楼
+10

如果您總是從服務器返回JSON(沒有空響應),則 dataType:'json'應該有效,並且不需要 contentType 但請確保JSON輸出...

  • 有效( JSONLint )< / li>
  • 已序列化 JSONMinify )< / li>

    jQuery AJAX會對有效但未反序列化的JSON拋出'parseerror'!

11楼
-10

您的腳本要求以JSON數據類型返回。

試試這個:

  private string test(){JavaScriptSerializer js = new JavaScriptSerializer(); return js.Serialize(“hello world”); }  
     
			
        
12楼
-100

嘗試以下

  $。ajax({type:'POST',url:'Jqueryoperation.aspx?Operation = DeleteRow',contentType:'application / json; charset = utf-8 ',data:{“Operation”:“DeleteRow”,“TwitterId”:1},dataType:'json',cache:false,success:AjaxSucceeded,error:AjaxFailed});   

OR

  $。ajax({type:'POST',url:'Jqueryoperation.aspx?Operation = DeleteRow&amp; TwitterId = 1',contentType :'application / json; charset = utf-8',dataType:'json',cache:false,success:AjaxSucceeded,error:AjaxFailed});   

在JSON對像中使用雙引號而不是單引號。我認為這將解決問題。

59
votes
answers
8 views
+10

Small Ajax JavaScript library [closed]

I'm looking for a very small (one liner) Ajax JavaScript library to add on the first line of a small script to make some requests.

I already tried:

But they do not work at all. Alternatives?

up vote 33 down vote accepted favorite
沙发
+330
+50

在這裡,非常簡單:

  function createXHR(){var xhr; if(window.ActiveXObject){try {xhr = new ActiveXObject(“Microsoft.XMLHTTP”); } catch(e){alert(e.message); xhr = null; } else {xhr = new XMLHttpRequest(); } return xhr; }   

文檔是這裡

示例:

  var xhr = createXHR(); xhr.onreadystatechange = function(){if(xhr.readyState === 4){alert(xhr.responseText); xhr.open('GET','test.txt',true)xhr。setRequestHeader('Content-type','application / x-www-form-urlencoded'); xhr.send()  

更新:

要進行跨域腳本編寫,您需要調用本地服務器端代理(讀取和回顯遠程數據),或者,如果遠程服務返回JSON,請使用此方法:

  var s = document.createElement('script') s.src ='remotewebservice.json'; document.body.appendChild(一個或多個);   

由於JSON本質上是一個JavaScript對像或數組,因此這是一個有效的來源。理論上應該能夠直接調用遠程服務。我沒有對此進行測試,但這似乎是一種公認的做法:

哦,但現在我忘記的是:它應該是跨域的:O - TomShreds 2010年8月12日19:23

哦,這是一個粗糙的。[研究] - Ryan Kinal 2010年8月12日19:24

@Tom我會說這值得一個自己的問題。 - Pekka웃2010年8月12日19:28

更新了未經測試的答案:-D - Ryan Kinal 2010年8月12日19:38

為了將來參考,xdomain是跨域腳本編寫的一個非常好的選擇。 - Ryan Kinal 2014年5月22日22:03

+200

這是非常好的建議。誰會貶低它,為什麼?去SE! - Phil於2013年11月16日19:32

謝謝@phil,一個心懷不滿的情人也許 - 在2014年1月17日16:39,msaspence

projects.jga.me/jquery-builder建議即使是一個僅限ajax的jQuery 2.1.1也是18kb gzipped和minified(完整的jQuery是28kb)。只是想提一下,因為我感到驚訝它並不小。 - Keeth 2015年2月13日19:02

+30

所以......很小......

  var obj =(window.ActiveXObject)?新的ActiveXObject(“Microsoft.XMLHTTP”):( XMLHttpRequest&amp;&amp; new XMLHttpRequest())|| 空值;  
     
			
        

很多ajax。這樣的哇。 - samvv 2016年5月8日20:27

+30

以下是我在node.js風格中使用異步回調的版本

https:// gist .github.com / 4706967

  // tinyxhr by Shimon Doodkin  -  licanse:public doamin  -  https://gist.github.com/4706967 // // tinyxhr(“ site.com/ajaxaction",function(錯誤,數據,xhr){if(錯誤)console.log(“goterr”,錯誤,'status ='+ xhr.status); console.log(data)}); // tinyxhr(“site.com/ajaxaction”,function(err,data,xhr){if(err)console.log(“goterr”,err,'status ='+ xhr.status); console.log(data ),'POST','value1 = 1&amp; value2 = 2'); // tinyxhr(“site.com/ajaxaction.json”,函數(錯誤,數據,xhr){if(錯誤)console.log(“goterr”,錯誤,'status =' + xhr.status); 的console.log(數據); console.log(JSON.parse(data))},'POST',JSON.stringify({value:1}),'application / javascript'); // cb  -  function(err,data,XMLHttpRequestObject){if(err)throw err; } // function tinyxhr(url,cb,method,post,contenttype){var requestTimeout,xhr; 嘗試{xhr = new XMLHttpRequest(); } catch(e){try {xhr = new ActiveXObject(“Msxml2.XMLHTTP”); } catch(e){if(console)console.log(“tinyxhr:XMLHttpRequest not supported”); return null; requestTimeout = setTimeout(function(){xhr.abort(); cb(new error(“tinyxhr:abund by a timeout”),“”,xhr);},5000); xhr.onreadystatechange = function(){if(xhr.readyState!= 4)return; clearTimeout(將requestTimeout); cb(xhr.status!= 200?new Error(“tinyxhr:server respnse status is”+ xhr.status):false,xhr.responseText,XHR); } xhr.open(method?method.toUpperCase():“GET”,url,true); //xhr.withCredentials = true; if(!post)xhr.send(); else {xhr.setRequestHeader('Content-type',contenttype?contenttype:'application / x-www-form-urlencoded'); xhr.send(post)}} tinyxhr(“/ test”,function(err,data,xhr){if(err)console.log(“goterr”,err); console.log(data)});   log(data)});   log(data)});  
     
			
        
0

你可以使用omee。它是一個單獨的文件,包含許多常用的javascript函數,如ajax請求。

https://github.com/agaase/ omee / blob / master / src / omee.js

提出ajax請求你只需用參數調用omee.raiseAjaxRequest

params - 參數列表例如param1 = param1value&amp; param2 = param2value

url - url命中服務器

要回叫的函數名稱

connType - GET / POST。

-10

嗯...... jQuery 可能比你想要的要大,但它可以說是仍然是一個非常好的選擇。它有很好的文檔,很好的支持,如果你使用CDN鏈接

  http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js < / code>  

它甚至很可能已經存在並緩存在客戶端的機器上。

谷歌CDN:ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js - Radu 2010年8月12日18:48

@Radu歡呼,這個URL就是我的意思。 - 佩卡웃2010年8月12日18:50

謝謝,但我只想要一個小片段。我使用jQuery來完成與javascript相關的所有工作,但這次我需要一些非常小的東西。 - TomShreds 2010年8月12日18:55

@Tom然後@Ryan的方法應該是完美的 - 它會盡可能小。 - Pekka웃2010年8月12日18:56

檢查github.com/nicematt/url-request? - Hydroper 2016年9月5日11:27

0
votes
answers
8 views
+10

如何從「ul」動態標籤獲得ID

1

我有下一種情況。 我在HTML代碼中有一個按鈕。當我按下按鈕中的其中一個選項時,我調用一個函數來構造其他按鈕的內容。如何從「ul」動態標籤獲得ID

我在HTML代碼中有一個ul標籤,裏面有一個li標籤列表。這個li標籤的值是用查詢數據庫動態生成的。 當我從li標籤生成選項時,我爲彼此分配了不同的ID。 在這裏你可以看到,我有第二個按鈕的代碼:

<div class="dropdown" class="btn-group-lg" id="test"> 
<button name="selSensor" id="seltipoSensor" class="btn btn-primary dropdown- 
toggle" type="submit" data-toggle="dropdown"> 
    <span>Select one option</span> 
</button> 
<ul class="dropdown-menu" id="test2"> 
</ul> 
</div> 

在這裏你可以看到,我要生成按鈕內部的李標籤的代碼。

<script type="text/javascript"> 


function selectedUbi(ubicacion){ 
    var datos = { 
    "arg" : ubicacion 
    }; 
    $.ajax({ 
    data: datos, 
    url: 'condatabase/calculos_bdd2.php', 
    type: 'post', 
    success: function (response) { 
     if(response){ 
      document.getElementById("test2").innerHTML = ""; 
      var ul = document.getElementById("test2"); 
      for (i=0;i<response.length;i++){ 
       var li = document.createElement("li"); 
       li.appendChild(document.createTextNode(response[i][i+1])); 
       li.setAttribute("id", "element"+i); 
       li.setAttribute("onclick",myFunction); 
       ul.appendChild(li); 
      } 
     } 
    }, 
    dataType:"json" 
    }); 
} 
</script> 

我已經是問題... ?我怎樣才能從L1標籤,我動態生成的ID?

我試圖使用「getElementByID」和「getElementByTagName」,但由於ID是動態的,我不知道要捕獲該值。

例如按鈕具有下一個選項以選擇: - 蘋果(ID =部件0) - bannana(ID =元素1) - 胡蘿蔔(ID =在element2)

當我選擇選項「bannana 「我需要獲得ID」element1「。

+2

兩件事情。首先,你的'myFunction'代碼在哪裏?其次,如果您使用jQuery,爲什麼不使用* jQuery? – j08691

沙发
0
0

您可以在容器上使用querySelectorAll來獲取元素列表,然後閱讀其屬性ID。

function getIds(container){ 
    return [...container.querySelectorAll('li[id]')].map(li => li.getAttribute('id')); 
} 

不過,我寧願建議創建一個數據抽象層來處理與數據獲取等操作......爲避免你的HTML結構和你的「邏輯」代碼的強耦合。

function createStore(){ 
    return { 
    async fetch(arg){ /*... return your data (and cache it etc */ } 
    }; 
} 

讓你的按鈕處理程序可以共享 「存儲」

const store = createStore(); 

document.getElementBy('button1').addEventListener('click',() => { 
    store.fetch().then(data => { /* do something with your data like updating html ... */}) 
}); 

document.getElementBy('button2').addEventListener('click',() => { 
    store.fetch().then(data => { /* do something with your data like updating html ... */}) 
}); 

//etc 
0
votes
answers
14 views
+10

AJAX,Django和HTML選擇?

0

我有一個很多領域的表格,但我有兩個選擇,一個選擇國家,一個選擇我選擇的國家的城市。AJAX,Django和HTML選擇?

我想這樣做:當我在第一個選擇中選擇國家時,我想更改第二個選擇的城市,並通過我選擇的contry的ID進行過濾。

這裏是我的Models.py

class country(models.Model): 
    country_name = models.CharField(max_length=264) 
    def __str__(self): 
     return self.country_name 

class country_cities(models.Model): 
    city_name = models.CharField(max_length=264) 
    country = models.ForeignKey(country) 
    def __str__(self): 
     return self.city_name 

,這裏是我的HTML表單:

<form method="post"> 
    <input type="text" name="username"> 
    <select name="country" onchange="listCities()"> 
    {% for country in countrylist %} 
     <option value="{{ country.id }}">{{ country.country_name }}</option> 
    {% endor %} 
    </select> 
    <select name="city" id="citylist"> 
    <!--HERE IS WHERE I WANT TO LIST JUST THE CITIES OF THE COUNTRY THAT I SELECTED--> 

    </select> 
</form> 

如何讓我的觀點,我有什麼庫在我的views.py導入?另外我不確定我的AJAX庫或我的腳本是否正確。

AJAX:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"> 
</script> 

SCRIPT:

<script type="text/javascript"> 
    function listCities() 
    { 
    var countryid = $("[name='country']").val(); 
    $('#citylist').html(''); 
    $.ajax({ 
     type: "POST", 
     data: "countryid="+countryid, 
     url: "editprofile/", 
     success: function(result) 
     { 
     var resultObj = JSON.parse(result); 
     var dataHandler = $("#citylist"); 
     $.each(resultObj, function(key, val) 
     { 
      var newRow = $('<option value="'+val.id+'">'); 
      newRow.html(' '+val.city_name +''); 
      dataHandler.append(newRow); 
     }); 

     } 
    }); 
    } 
</script> 
+0

而不是做一個Ajax調用,你有沒有考慮讓所有的城市加載客戶端在json對象中,並使用普通的javascript來改變你的第二選擇的選項? – DragonBobZ

+0

這是一個小提琴https://jsfiddle.net/q4np1169/看起來如何。 (使用jQuery,而不是普通的js) – DragonBobZ

沙发
0
0

我用getJSON代替POST類似的東西。這假設你從HTML中取出onchange,並在jQuery中使用change,而使用select框ID爲#countrylist。它使用選擇框中的值作爲國家/地區的查詢id

對於ajax調用,您還需要一個view。 AJAX部分中的url變量將與此掛鉤。你views.pyscript.js可能有這樣的事情:

#views.py 
#...other imports... 
from django.core import seralizers 

def select_country(request): 
    if request.method == 'GET' and request.is_ajax(): 
    selected_country = request.GET.get('id') 
    json_city = serializers.serialize("json", country_cities.objects.filter(country_id = selected_country)) 
    return HttpResponse(json_city, content_type='application/json') 
    else: 
    return HttpResponse("no-go") 

#YourScript.js 
$(function(){ 
//...your AJAX configurations would go up here, like CSRF stuff... 

$(document).on('change', "#countrylist", function(e) { 
    e.preventDefault(); 
    console.log($(this).val()); 
    var url = http://127.0.0.1:8000/yourURLtoView 
    $.getJSON(url, {id: $(this).val()}, function(j) { 
     var options = '<option value="">---??---</option>'; 
     for (var i = 0; i < j.length; i++) { 
      options += '<option value="' + parseInt(j[i].pk) + '">' + j[i].fields['city_name'] + '</option>'; 
     } 
     console.log(options); //This should show the new listing of filtered options. 
     $("#citylist").html(options); 
     $("#citylist option:first").attr('selected', 'selected'); 
    }); 
    $("#countrylist").attr('selected', 'selected'); 
}); 

}); 

另外,如果我可能會建議您重新命名country_cities模型只是City。將類設想爲適當的實體,如CarPersonComputer。讓我知道這是否適合你,因爲我試圖從我自己的文件中轉錄它。