JQuery Ajax მიიღეთ მონაცემები სხვა დომენზე. ჯვრის დომენი Ajax ერთად jQuery

2 დეკემბერი. , 2016

ერთხელ დავწერე სტატია, როგორ შევქმნათ ჩაშენებული ვიჯეტები მშობლიურ JavaScript- ზე და PHP- ზე. და ყველაფერი კარგად იქნებოდა, მაგრამ ერთი მომენტი არ იმოქმედა. ასეთი ვიჯეტები შეიძლება გამოყენებულ იქნას ჩვენს საიტზე, მაგრამ უფრო საინტერესოა, რომ მათ მესამე მხარის რესურსების შექმნა. მაგრამ ამ შემთხვევაში, სასურველი მონაცემების ბრაუზერი უნდა იტვირთოს სხვა დომენზე - ეს არის ჯვარი დომენი AJAX მოთხოვნები.

Frontend პროგრამისტების თვალსაზრისით, Cross-Domain მოთხოვნები არ განსხვავდება ჩვეულებრივიდან. მაგრამ ბეკენზე განსხვავებაა. რატომ არ არის ყველაფერი ისე მარტივია და როგორ უნდა განახორციელოთ ისინი - წაიკითხეთ სტატიაში.

ჩვენ ვცდილობთ, რომ სხვა დომენის მონაცემები მივიღოთ

სიმარტივისთვის, მიიჩნევს მოთხოვნებს. დავუშვათ სერვერზე გარკვეული HTML ფაილი, რომელიც ზღვარზე ჩვენთვის, თუ როგორ უნდა ჩამოტვირთოთ Ajax-Ohm სხვა domain..html. გახსენით და დარწმუნდით, რომ ეს მართლაც ხელმისაწვდომია - (ახალი ჩანართის გახსნა). ეს არის რეგულარული div ტექსტით "შინაარსი Template.html".

და ახლა მოდით მიიღოთ ეს HTML-Ku Ajax-Ohm პირდაპირ ბრაუზერის კონსოლიდან.

ჩვენ არ ვიქნებით მშობლიურ JavaScript- ით, და JQuery- ის გამოყენებით მოთხოვნის მამოძრავებელი () და კონსოლს, რაც მათ სერვერზე პასუხად მიიღეს.

$ .. HTML ", ფუნქცია (responce) (Responce)));

გახსენით ახლავე დეველოპერული ინსტრუმენტები ბრაუზერში და Console tab- ში, გააკეთეთ ეს მოთხოვნა.

თქვენ ნახავთ შემდეგს

ყველაფერი მშვენიერია, გაგზავნილი მოთხოვნა, მიიღო პასუხი. როგორც ჩანს, ეს შეიძლება იყოს ადვილი? და ახლა წასვლა ნებისმიერ სხვა საიტზე, სადაც jQuery უკავშირდება და ცდილობენ იგივე. მხოლოდ არ არის HTTPS საიტზე, რატომ - სწავლობენ სტატიის ბოლოს.

მაგალითად, მე შევამოწმე მოთხოვნები Bombardir.ru საფეხბურთო საიტზე. და ამავე დროს, იგი გაათავისუფლეს, რომელიც ნაგავი არ მოხვდება კონსოლშიც კი, როგორიცაა ცნობილი საიტები. თუმცა, საუბარი არ არის ამის შესახებ.

შეასრულოს მოთხოვნა სხვა დომენისგან და დაინახავთ კონსოლს აღარ ასეთი აშკარა სურათი. ამბობს, შეუძლებელია ჩამოტვირთოთ, არ არის მონაცემები და ზოგადად მწუხარება.

თუ ქსელის ჩანართზე გახსენით და იპოვეთ შესაბამისი შეკითხვა, დაინახავთ სერვერს 200 OK- ში
და არ არსებობს შინაარსი ფაილი. რა არის დაჭერა?

რა მოხდა არასწორი და რა იქნება გადაწყვეტილება

დაჭერა ის არის, რომ ინტერნეტ პოლიტიკას ბრაუზერები არ აძლევენ ნებისმიერ რესურსს. გარდა იმ შემთხვევებისა, როდესაც ეს რესურსები დაინტერესებულია კონკრეტული მონაცემების გავრცელებაში.
ჩვენი საქმეა ასეთი. მისცეს ნებართვა HTML ფაილის გამოყენების ნებისმიერ წერტილში, გსურთ წვდომის კონტროლის საშუალებას იძლევა HTTP ჰედერის გაგზავნისას.

ახლა კითხვა არის ის, თუ როგორ უნდა გავაკეთოთ. თუ თქვენ (ან Admins) აქვს ხელმისაწვდომობა Nginx, მაშინ ერთი გზა კონფიგურაცია დაბინძურების ამ სათაურის ინსტრუმენტები ვებ სერვერზე. თქვენ წასვლა Admins შესაბამისი მოთხოვნა ან Google თავს სასურველი configs თქვენი ვებ სერვერი.

თუ არ არსებობს ეს წვდომა, მაგალითად, მაგალითად, თითქმის ნებისმიერი ჰოსტინგის პროვაიდერი იაფი ტარიფით, მაშინ უნდა გავიდნენ თავი. და აქ PHP მოდის სამაშველო. იდეა არის ჩვენი HTML-Ku შევიდა PHP ფაილი, რომელიც იწვევს სათაურით, და მისცემს სასურველ შინაარსს.

აღმოჩნდება, რომ თქვენ შექმნით ფაილის Template.php და პირველი სიმებიანი ჩაწერეთ PHP ბრძანება

სათაური ("დაშვების კონტროლი-დაშვება-წარმომავლობა: *");

კონტენტი template.php.

ანუ, თსს-ის შინაარსი იქნება ასე, არ დაივიწყოთ PHP-Sleeves და ფრჩხილების შესახებ

WebDevkin- ის ფაილი შეიქმნა და ტყუილია (იხსნება ახალი tab). მოდით ახლა ვცადოთ სხვა დომენისგან მოითხოვოს და რა მოხდება

$ .. PHP ", ფუნქცია (Responce));

როგორც ხედავთ, ყველაფერი კარგად მუშაობს - ფაილი დატვირთულია!

შეხედეთ ქსელის ჩანართს.
გთხოვთ გაითვალისწინოთ, რომ დაშვების კონტროლის საშუალებას-წარმოშობის ჰედერი დაინტერესებულია რეაგირების სათაურების ბლოკში.

ზოგადად, სტატია დასრულებულია. ეს რჩება შეგროვება აზრები bunch და დაამატოთ კიდევ რამდენიმე ინფორმაცია.

შეჯამება და შეავსოთ

  • 1. შეუძლებელია ადვილად მოითხოვოს AJAX ნებისმიერი რესურსი სხვა დომენისგან
  • 2. წვდომის კონტროლის საშუალებას იძლევა ყველა რესურსისთვის ხელმისაწვდომი ხელმისაწვდომობისთვის.
  • 3. გააკეთეთ ეს სერვერი ან PHP
  • 4. PHP- ზე, ეს სათაური იგზავნება სათაურის ბრძანებით ("დაშვების კონტროლი-წარმოშობის: *")
  • 5. წვდომის კონტროლის საშუალებას: * - ყველა დომენის ხელმისაწვდომობის, წვდომის კონტროლის საშუალებას: Site.ru - მხოლოდ Domain Site.ru
  • 6. წვდომის კონტროლის საშუალებას იძლევა PHP ფაილის დასაწყისში, სხვა მონაცემების გამომუშავებამდეც კი (ისევე, როგორც ნებისმიერი სხვა HTTP სათაურები)
  • 7. "რესურსი" არ არის მხოლოდ HTML მარკირების ფაილი, არამედ ნებისმიერი URL, რომელსაც AJAX მოთხოვნა მოდის, მაგალითად, JSON მონაცემების მიღება ან პოსტის მოთხოვნის მიღება მონაცემთა ბაზის მაგიდაზე

და ბოლო, განხორციელებული ცალკე. მე არ ვცდილობდი HTTP საიტისგან მოთხოვნის შესრულებას. HTTPS- სთან ერთად არ იქნება შესაძლებელი მონაცემების ჩატვირთვა HTTP- ს სხვა მიზეზით - შერეული შინაარსი. და საიტი ჯერ კიდევ http საიტი ( განახლებულია: აღარ გადაიდო საიტი HTTPS- ზე)

ეს არის ის, რაც თქვენ იხილავთ კონსოლში, ცდილობს შეასრულოს იგივე მოთხოვნა ნებისმიერი HTTPS საიტისგან. აქედან გამომდინარე, თუ თქვენ აპირებთ ჩაერთონ ჩადგმული ვიჯეტების ან მსგავსი რამ, თქვენ აუცილებლად უნდა დააყენოთ SSL სერტიფიკატი თქვენს საიტზე.

jquery.ajax () - ასრულებს მოთხოვნას სერვერზე გვერდის გადატვირთვის გარეშე. ეს არის დაბალი დონის მეთოდი. დიდი რაოდენობა პარამეტრები. იგი ეფუძნება ყველა AJAX- ს მუშაობას, რომელიც ხშირად უფრო ადვილია გასაგები და გამოყენება, მაგრამ ამ მეთოდთან შედარებით შეზღუდული ფუნქციონირებაა.

$ .AAJAX () ბრუნდება XMLHTTPRequest ობიექტი. უმეტეს შემთხვევაში, თქვენ არ გჭირდებათ პირდაპირ ამ ობიექტთან მუშაობა, მაგრამ ჯერ კიდევ ხელმისაწვდომია, იმ შემთხვევაში, თუ თქვენ უნდა შეუშალოს თხოვნას ხელით.

როგორც არგუმენტი, ფუნქცია $ $ .AJAX () გადადის ობიექტი, რომელიც შედგება წყვილი ძირითადი / ღირებულებისგან, რომლებიც გამოიყენება მოთხოვნის ინიციალიზაციისა და მართვის მიზნით.

Ajax მოთხოვნას აქვს ორი გამოყენება პარამეტრები:

jquery.ajax (URL [, პარამეტრები])

მეთოდის წინა ვერსიის სხვაობა შედგება მხოლოდ იმით, რომ URL ქონება აქ არის პარამეტრების ნაწილი და არა ცალკე პარამეტრი.

პარამეტრების სია (პარამეტრები)

  1. იღებს.(Default: დამოკიდებულია Datatype)
    ტიპი: ობიექტი.
    შეკითხვის შესრულებისას, სათაურები (სათაურები) მიუთითებენ სერვერზე მოსალოდნელი შინაარსის დასაშვებ სახეებზე. ამ ტიპის ღირებულებები მიიღება PARAMETER- ისგან. მაგალითად, შემდეგი მაგალითი მიუთითებს საბაჟოების დასაშვებ ტიპებზე:

    $.

    $. აიაქსი ((

    adcepts:

    mycustomtype: "განცხადება / X- ზოგიერთი საბაჟო ტიპის"

    კონვერტორები:

    "ტექსტი Mycustomtype": ფუნქცია (შედეგი) (

    დაბრუნება Newresult;

    datatype: "Mycustomtype"

    } ) ;

  2. async. (Default: true)
    ტიპი: ლოგიკური ღირებულება.
    ჩვეულებრივ, ყველა მოთხოვნა იგზავნება ასინქრონულად (ანუ სერვერის მოთხოვნის გაგზავნის შემდეგ, გვერდი არ შეაჩერებს თავის მუშაობას რეაგირებისას). თუ თქვენ უნდა გააგზავნოთ quercronously, დააყენეთ ეს ვარიანტი ცრუ. Crossdomain ითხოვს და "JSONP" ტიპის მოთხოვნებს ვერ შესრულდება სინქრონული რეჟიმში. გთხოვთ გაითვალისწინოთ, რომ სინქრონული მოთხოვნები შეიძლება დაბლოკოს ბრაუზერის დროს აღსრულების დროს.
  3. beforesert (JQXHR, პარამეტრები)
    ტიპი: ფუნქცია.
    შეიცავს ფუნქციას, რომელიც დაუყოვნებლივ დარეგისტრირდება სერვერზე AJAX- ის მოთხოვნის გაგზავნამდე. ეს ფუნქცია სასარგებლოა JQXHR ობიექტის შეცვლისთვის (შემოსული ადრეული ვერსიები ბიბლიოთეკები (მდე 1.5), ნაცვლად JQXHR იყენებს XMLHTTPRequest). მაგალითად, თქვენ შეგიძლიათ შეცვალოთ / მიუთითოთ საჭირო სათაურები (სათაურები) I.D. JQXHR ობიექტი გადაეცემა პირველ არგუმენტს. მეორე არგუმენტი გადის შეკითხვის პარამეტრებს.
    Beforesend ეხება Ajax მოვლენების. აქედან გამომდინარე, თუ IT- ში მითითებული ფუნქცია ყალბი, AJAX- ის შეკითხვას გაუქმდება. Beforesend ეწოდება დამოუკიდებლად შეკითხვის ტიპის.
  4. ქეში. (DEFAULT: TRUE, FALSE DATATYPE "SCRIPT" და "JSONP")
    ტიპი: ლოგიკური ღირებულება.
    თუ გსურთ ბრაუზერი არ გამოიყენოთ თხოვნა, მაშინ ეს პარამეტრი ცრუ. გთხოვთ გაითვალისწინოთ, რომ თუ პარამეტრი ყალბი იქნება, "_ \u003d" სიმებიანი URL დაემატება URL- ს.
  5. სრული (jqxhr, textstatus)
    ტიპი: ფუნქცია.
    ფუნქცია, რომელიც შესრულებულია ყოველ ჯერზე AJAX შეკითხვის დასრულების შემდეგ (წარმატებისა და შეცდომის დასრულების შემდეგ). ორი პარამეტრი გადაეცემა ფუნქციას: JQXHR (ბიბლიოთეკის ადრეულ ვერსიებში (1.5-მდე), JQXHR- ის ნაცვლად იყენებს XMLHTTPRequest- ს) და შეკითხვის აღსრულების სტატუსს (სიმებიანი ღირებულება: "წარმატება", "Notmodified" შეცდომა "," შეყოვნება "," შეწყვეტა ", ან" ParserError ").
    დაწყებული jQuery-1.5, სრული პარამეტრი შეიძლება გადაცემული არ არის ერთი ფუნქცია, მაგრამ მასივი ფუნქციები. ყველა ფუნქცია გამოწვეულია იმისათვის, რომლითაც აღინიშნება მასივი.
  6. შინაარსი.
    ტიპი: ობიექტი.
    პარამეტრი გამოჩნდა jQuery-1.5- ში ფორმატის ობიექტში (სიმებიანი: რეგულარული გამოხატვა) და განსაზღვრავს, თუ როგორ იმოქმედებს JQuery- ს სერვერის რეაგირება, რაც დამოკიდებულია მის ტიპზე.
  7. Შინაარსის ტიპი.
    ტიპი: ლოგიკური ღირებულება ან სიმებიანი.
    სერვერზე მოთხოვნის გაგზავნისას მონაცემები გადაეცემა შინაარსში მითითებულ ფორმატში. ჩვეულებრივ, "განცხადება / X-www-Form-Urlencoded; Charset \u003d UTF-8 ', რომელიც ძირითად შემთხვევებში შესაფერისია. თუ ამ პარამეტრის მითითებით, მკაფიოდ არის, იგი გადაეცემა სერვერს (მაშინაც კი, თუ არ არსებობს მონაცემები).
    ერთად jQuery-1.6 თქვენ შეგიძლიათ გაგზავნოთ ყალბი, რომ არ დააყენოთ სათაური.
  8. კონტექსტი.
    ტიპი: ობიექტი.
    ობიექტი, რომელიც იქნება კონტექსტის შემდეგ შეკითხვის შემდეგ (გადაცემული ღირებულება ამ ცვლადში). მაგალითად, თუ თქვენ განსაზღვრავს DOM ელემენტის კონტექსტს, მაშინ ყველა AJAX მოთხოვნის დამკვიდრება ასევე შესრულდება ამ DOM ელემენტის კონტექსტში. ამ მაგალითში სიტყვა ეს შეიცავს დოკუმენტს.

    $ .AJAJAX ((URL: "test.html", კონტექსტი: document.body)). შესრულებულია (ფუნქცია ($) .დამატებითი ("შესრულებულია"););

    $. აიაქსი ((

    uRL: "test.html",

    კონტექსტი: დოკუმენტი. სხეული.

    )). შესრულებულია (ფუნქცია ()

    $ (ეს). AddClass ("შესრულებულია");

    } ) ;

  9. კონვერტორები.(ნაგულისხმები: "* ტექსტი": window.string, "Text HTML": TRUE, "ტექსტი JSON": jquery.parsejson,
    ტიპი: ობიექტი.
    პარამეტრი გამოჩნდა jQuery-1.5 განსაზღვრავს, თუ რა ფუნქციები იქნება მოაქცია ღირებულებები იგივე ტიპის, სხვა.
  10. crossdomain.(default: ცრუ იგივე დომენი, ჭეშმარიტი crossdomains)
    ტიპი: ლოგიკური ღირებულება.
    პარამეტრი გამოჩნდა JQuery-1.5- ში, თუ გვინდა შეასრულოს ჯვარედინი დომენის შეკითხვა (მაგალითად, JSONP) იმავე დომენზე, მითითებული Crossdomain გარემოში. ეს საშუალებას იძლევა, მაგალითად, სერვერის გადამისამართება სხვა დომენზე.
  11. მონაცემები.
    ტიპი: ობიექტი, სიმებიანი ან მასივი.
    მონაცემები, რომლებიც გადაეცემა სერვერს. თუ მონაცემები არ არის სიმებიანი, მაშინ ისინი გარდაიქმნება შეკითხვის სიმებიანი. მოთხოვნის მისაღებად, მონაცემები ერთვის URL- ს. ობიექტი უნდა შედგებოდეს წყვილი გასაღები / ღირებულება. თუ მასივის ღირებულება, მაშინ jQuery ბრძანებები ღირებულებები დამოკიდებულია ტრადიციული გარემოში. მაგალითად, მაგალითად, (Foo: ["Bar1", "Bar2"]) იქცევა & foo \u003d bar1 & foo \u003d bar2.
  12. datafilter (მონაცემები, ტიპი)
    ტიპი: ფუნქცია.
    ფუნქცია, რომელიც სერვერის მიერ გაგზავნილი წინასწარ პროცესის მონაცემებს, I.E. ეს უნდა ითამაშოს ფილტრის როლი და გაწმენდილი სიმებიანი დაბრუნება. ორი პარამეტრი გადაეცემა ამ ფუნქციას: მონაცემები აღნიშნული და პარამეტრების ღირებულება Მონაცემთა ტიპი. Datafilter- ში მითითებული ფუნქცია უნდა დაბრუნდეს დამუშავებული მონაცემები.
  13. Მონაცემთა ტიპი (Default: განისაზღვრება ავტომატურად (XML, JSON, Script, ან HTML))
    ტიპი: row.
    ტიპის მონაცემები, რომელშიც სერვერის პასუხია. თუ ეს არ არის მითითებული, jQuery შეეცდება განსაზღვროს იგი ავტომატურად გამოყენებით MIME სერვერი.
  14. შეცდომა
    ტიპი: ფუნქცია
    ფუნქცია, რომელიც სერვერზე მოთხოვნის წარუმატებლობის შემთხვევაში მოუწოდებს. იგი უზრუნველყოფს სამი პარამეტრს: JQXHR (მდე 1.5 გამოიყენება XMLHTTPRequest), სიმებიანი შეცდომით, რომელიც მოხდა, ისევე როგორც გამონაკლისი ობიექტი, თუ ეს მოხდა. მეორე არგუმენტის შესაძლო ღირებულებები: "შეყოვნება", "შეცდომა", "Notmodified" და "ParserError" (გაუთვალისწინებელი შემთხვევებში, null ღირებულება შეიძლება დაბრუნდეს). დაწყებული jQuery-1.5, ამ პარამეტრს შეუძლია მიიღოს ორივე ფუნქცია და მასივი ფუნქციები.
    შეცდომის ღონისძიება არ მოხდება, როდესაც Datatype არის ტოლი სცენარის ან JSonp.
  15. გლობალური (Default: true)
    ტიპი: ლოგიკური ღირებულება.
    პასუხისმგებელია გლობალური AJAX- ის მოთხოვნის მოვლენების შესახებ (მაგალითად, AJAXSTART ან AJAXSTOP). თუ ამ პარამეტრს ცრუ, გლობალური ღონისძიებები ეს მოთხოვნა ეწოდება.
  16. სათაურები.
    ტიპი: ობიექტი.
    პარამეტრი გამოჩნდა JQuery-1.5 აქ შეგიძლიათ მიუთითოთ დამატებითი შეკითხვის სათაურები (თავი). ამ პარამეტრების ღირებულებები შევიდნენ BeforeSend ფუნქციის წინაშე, რომელშიც საბოლოო ცვლილებები შეიძლება გაკეთდეს სათაურებში.
  17. ifmodified
    ტიპი: ლოგიკური ღირებულება.
    ამ პარამეტრის გადაცემისას, შეკითხვა დასრულდება სტატუსით "წარმატებული", მხოლოდ იმ შემთხვევაში, თუ სერვერის პასუხი განსხვავდება წინა პასუხიდან. JQuery ამოწმებს ეს ფაქტი, რომელიც გულისხმობდა ბოლო მოდიფიცირებულ სათაურს. დაწყებული JQuery-1.4, გარდა უკანასკნელი შეცვლილი და "Etag" ასევე შემოწმდება (ორივე უზრუნველყოფილია სერვერის მიერ და საჭიროა აცნობოს ბრაუზერს, რომ მოთხოვნილი მონაცემები სერვერზე არ შეცვლილა წინა მოთხოვნით).
  18. ★ლოციო
    ტიპი: ლოგიკური ღირებულება.
    პარამეტრი გამოჩნდა jQuery-1.5.1- ში, რომელიც საშუალებას გაძლევთ შექმნას გვერდის წყაროს სტატუსი ადგილობრივი (თითქოს ეს მოხდა ფაილის პროტოკოლის საშუალებით), მაშინაც კი, თუ jquery აღიარა ეს სხვაგვარად. ბიბლიოთეკა გადაწყვეტს, რომ გვერდი ადგილობრივად მუშაობს შემდეგი პროტოკოლების შემთხვევაში: ფაილი, * -ტეზენცია და ვიჯეტის შემთხვევაში. რეკომენდებულია ისტოკალური პარამეტრის ღირებულების გლობალური ღირებულების ჩამოყალიბება - $ .AJAXSETUP () ფუნქცია, და არა ინდივიდუალური Ajax queries- ის პარამეტრები.
  19. jsonp
    ტიპი: რიგი ან ლოგიკური ღირებულება.
    განსაზღვრავს პარამეტრის სახელი, რომელიც დაემატება JSONP- ს მოთხოვნის URL- ს (ნაგულისხმევი, "Callback" გამოიყენება). მაგალითად, კონფიგურაცია (JSONP: "OnJSonopload") კონვერტირებულია სიმებიანი "onjsonpload \u003d?" . ვერსია 1.5-დან, ამ ყალბი პარამეტრის სპეციფიკაციას ხელს უშლის URL- ს დამატებითი პარამეტრი. ამ შემთხვევაში, თქვენ უნდა დააყენოთ JSonPCallback პარამეტრი ღირებულება. მაგალითად, ეს არის: (JSONP: FALSE, JSONPCALLBALBACK: "CallbackName").
  20. jsonpcallback
    ტიპი: სიმებიანი ან ფუნქცია.
    განსაზღვრავს ფუნქციის სახელს, რომელიც დარეგისტრირდება სერვერზე პასუხის გასაცემად. By default, jQuery ქმნის თვითნებური სახელი ამ ფუნქციის, რომელიც უფრო სასურველი ვარიანტი, რომელიც ამარტივებს ოპერაციის ბიბლიოთეკაში. ერთ-ერთი მიზეზი, რომელშიც ის არის, რომ თქვენი საკუთარი JSONP შეკითხვის დამუშავების ფუნქციის განსაზღვრაა მოთხოვნის ქეშირების გასაუმჯობესებლად.
    დაწყებული jQuery-1.5, შეგიძლიათ მიუთითოთ ფუნქცია ამ პარამეტრის, რათა პროცესი სერვერის პასუხი თავს. ამ შემთხვევაში, მითითებული ფუნქცია უნდა დაბრუნდეს სერვერზე მიღებული მონაცემების (მითითებულ ფუნქციაში, რომელიც მათ პირველ პარამეტრებში ხელმისაწვდომი იქნება).
  21. მეთოდი (default: "მიიღეთ")
    ტიპი: row.
    პარამეტრი გამოჩნდა JQuery-1.9.0- ში, საშუალებას გაძლევთ განსაზღვროთ სერვერზე მოთხოვნის ტიპი ("პოსტი", "მიიღეთ", "განათავსეთ")
  22. mimetype.
    ტიპი: row.
    პარამეტრი გამოჩნდა JQuery-1.5.1- ში. ამ სფეროში შეგიძლიათ მიუთითოთ მონაცემების ტიპი, რომელშიც სერვერის პასუხი XHR- ის ნაცვლად მოსალოდნელია
  23. პაროლი.
    ტიპი: row.
    სერვერზე ავტორიზაციის პაროლი, საჭიროების შემთხვევაში.
  24. პროცედურა. (ნაგულისხმევი ჭეშმარიტი)
    ტიპი: ლოგიკური ღირებულება.
    ჩვეულებრივ, სერვერზე გადაცემული მონაცემები გადაყვანილია შეკითხვის სიმებიანი ობიექტისგან (URL ფორმატი: FNAME1 \u003d VALUE1 & FNAME2 \u003d VALUE2 & ...) და გაგზავნილი როგორც "განაცხადი / X-www-Form-Urlencoded". თუ თქვენ უნდა გააგზავნოთ DOM დოკუმენტი ან სხვა მონაცემები, რომელიც არ შეიძლება მოაქცია, რომ პროცედურის პარამეტრის მითითება ცრუ.
  25. scriptcharset.
    ტიპი: row.
    ვრცელდება მხოლოდ Ajax მისაღებად შეკითხვებს, Datatype შეიძლება იყოს ან "JSONP", ან "სცენარი". თუ სერვერზე მესამე მხარის დომენი იყენებს კოდირებას, გარდა თქვენი, თქვენ უნდა მიუთითოთ მესამე მხარის სერვერის კოდირება.
  26. სტატუსი კოდი.
    ტიპი: ობიექტი.
    პარამეტრი გამოჩნდა jQuery-1.5.0 კომპლექტი ორთქლის, რომელშიც შეკითხვის კოდები შედარებით ფუნქციები, რომელიც იქნება გამოწვეული. მაგალითად, კოდექსის 404 (არ არსებობს), შეგიძლიათ ეკრანზე გაგზავნა:

    $ .AJAX (სტატუსი კომპიუტერი: (404: ფუნქცია (") (" გვერდი ვერ მოიძებნა ");));

    $. აიაქსი ((

    სტატუსი: (

    404: ფუნქცია ()

    გაფრთხილება ("გვერდი ვერ მოიძებნა");

    } ) ;


    თუ მოთხოვნა წარმატებით გაიარა, მაშინ პარამეტრი, ანონიმური ფუნქცია ის იმავე პარამეტრებს მიიღებს, რომ შეკითხვის წარმატებული შესრულების ფუნქციები (წარმატების პარამეტრებში მითითებულია) და შეცდომის შემთხვევაში შეცდომის შემთხვევაში.
  27. წარმატება (მონაცემები, ტექსტები, jqxhr)
    ტიპი: ფუნქცია, მასივი.
    ფუნქცია, რომელიც მოუწოდებს სერვერის მოთხოვნის წარმატებით დასრულების შემთხვევაში. იღებს 3 არგუმენტს:
    • სერვერისა და წინასწარი დამუშავების მიერ გაგზავნილი მონაცემები (მონაცემები);
    • სიმებიანი აღსრულების სტატუსი (textstatus);
    • ობიექტი JQXHR (in ვერსიები მდე 1.5 ნაცვლად JQXHR იყენებს XMLHTTPRequest). JQuery 1.5, ერთი ფუნქციის ნაცვლად, ამ პარამეტრს შეუძლია მიიღოს ფუნქციების მასივი.
  28. Დროის ამოწურვა.
    ტიპი: ნომერი.
    დრო ელოდება რეაგირებას სერვერზე Milliseconds- ში. გადაწერა გლობალური პარამეტრი იგივე პარამეტრი $ .AJAXSETUP (). თუ ეს დრო გადააჭარბებს, მოთხოვნა დასრულდება შეცდომით და მოხდება შეცდომის მოვლენა, რომელსაც ექნება სტატუსი "შეყოვნება".
    დრო ითვლიან $ C დარეკვის მომენტში. ეს შეიძლება მოხდეს, რომ ამ მომენტში რამდენიმე სხვა მოთხოვნა დაიწყება და ბრაუზერი გამოაქვეყნებს მიმდინარე მოთხოვნის შესრულებას. ამ შემთხვევაში, დროულად შეიძლება დასრულდეს, თუმცა, ფაქტობრივად, მოთხოვნა კი არ დაწყებულა.
    JQuery-1.4 და უმცროსი, ლოდინის დასასრულს, XMLHTTPRequest ობიექტი შეცვლის შეცდომას და მის სფეროებში ხელმისაწვდომობას შეუძლია გამონაკლისი. Firefox 3.0+, Script და JSonp queries არ შეწყდება, როდესაც ლოდინის დრო გადააჭარბებს. ისინი დასრულდება მას შემდეგ, რაც ამ დროს იწურება.
  29. ტრადიციული
    ტიპი: ლოგიკური ღირებულება.
    დააყენეთ ამ პარამეტრის მნიშვნელობა ჭეშმარიტად, იმისათვის, რომ გამოიყენოთ ტრადიციული კონვერტაციის პარამეტრები (სერიალიზაცია).
  30. ბეჭდვა(Default: "მიიღეთ")
    ტიპი: row.
    ანალოგური პარამეტრი მეთოდი. პარამეტრი გამოიყენება jQuery- ში 1.9.0-ში
  31. uLL (default: მიმდინარე გვერდის მისამართი)
    ტიპი: row.
    განსაზღვრავს მისამართს, რომელსაც თხოვნა გაიგზავნება.
  32. მომხმარებლის სახელი.
    ტიპი: row.
    მომხმარებლის სახელი სერვერზე ავტორიზაციისთვის, საჭიროების შემთხვევაში.
  33. xHR.(default: ActiveXobject IE, XMLHTTPRequest სხვა ბრაუზერებში)
    ტიპი: ფუნქცია.
    ფუნქცია, რომელიც უზრუნველყოფს XMLHTTPRequest ობიექტს. ჩვეულებრივ, IE ბრაუზერები ეს ობიექტი არის ActiveXobject, და სხვა შემთხვევებში ეს არის xmlhttprequest. ამ პარამეტრით, შეგიძლიათ ამ ობიექტის საკუთარი ვერსიის განხორციელება.
  34. xhrfields.
    ტიპი: ობიექტი.
    პარამეტრი გამოჩნდა JQuery-1.5.1 კომპლექტი წყვილი (სახელი: ნიშანი) შეცვალოს / დაამატოთ ღირებულებების შესაბამის სფეროებში ObjectXMTTPRequest. მაგალითად, თქვენ შეგიძლიათ დააყენოთ მისი withcredentials ქონება ჭეშმარიტი, როდესაც ასრულებენ Crossdomain შეკითხვა:

    $.

    $. აიაქსი ((

    uRL: a_cross_domain_url,

    xhrfields:

    withcredentials: ჭეშმარიტი.

    } ) ;

როგორც ზემოთ აღვნიშნეთ, $ .AJAX () ყველაზე ძირითადი მეთოდი და ყველა შემდგომი მეთოდები მხოლოდ მისი შეფუთვაა. ძალიან ნაწილი არ არის საჭირო ამ ფუნქციის მოწოდება, რადგან არსებობს მაღალი დონის ალტერნატივები, როგორიცაა და. ისინი უფრო ადვილია გაგება და გამოყენება, თუმცა $ .AJAX () უფრო მოქნილი გამოსავალია.

უმარტივესი გზა იქნება $ .AJAX () დარეკვის გარეშე პარამეტრების მითითებით:

$. აიაქსი ();

ღონისძიების ჰოლანდიელები

Beforesend, შეცდომა, Datafilter პარამეტრები, წარმატება და სრული საშუალებას გაძლევთ დააყენოთ ღონისძიების handlers რომ მოხდეს გარკვეული დრო თითოეული Ajax შეკითხვის.

  • beforesend.ხდება სერვერზე მოთხოვნის გაგზავნამდე დაუყოვნებლივ;
  • შეცდომა ხდება შეკითხვის წარუმატებელი აღსრულების შემთხვევაში;
  • datafilter. ხდება სერვერის მონაცემების ჩამოსვლის დროს. საშუალებას გაძლევთ გაუმკლავდეთ სერვერის მიერ გაგზავნილი მონაცემების "ნედლეულ" მონაცემებს;
  • წარმატება. ხდება მოთხოვნის წარმატებით დასრულების შემთხვევაში;
  • სრული.მოთხოვნის დასრულების შემთხვევაში.
  • წარმატება: ფუნქცია ()

    alert ( "მონაცემები წარმატებით გაიგზავნა.") ;

    } ) ;

    ყურადღება! პარამეტრების განხილული ზემოქმედება (), .შეიძინეთ () და დაემატა jQuery-1.5, გარდა გადავადებული ობიექტის მეთოდების გარდა. Fail () რომელიც შეგიძლიათ დააყენოთ Handlers თუმცა, დაწყებული jQuery-1.8 ეს სამი მეთოდი იქნება არასასურველი გამოყენება.

    Მონაცემთა ტიპი

    $ .AJAX () ფუნქცია გაიგებს სერვერზე გაგზავნილი მონაცემთა სერვერის ტიპზე (MIME ინსტრუმენტები). გარდა ამისა, შესაძლებელია პირადად მიუთითოთ (გასარკვევად) როგორ უნდა გაითვალისწინოთ ეს მონაცემები. ეს კეთდება პარამეტრის გამოყენებით. Მონაცემთა ტიპი. ამ პარამეტრის შესაძლო ღირებულებები:

    • "XML" - XML \u200b\u200bდოკუმენტი ხელმისაწვდომი იქნება ტექსტის ფორმით. თქვენ მასთან მუშაობა შეგიძლია სტანდარტული საშუალებები jQuery (ისევე როგორც HTML დოკუმენტით).
    • "HTML" - HTML მიღებული იქნება ტექსტური ფორმით. თუ ის შეიცავს სკრიპტებს tags
      სერვერზე რაღაც რიცხვი 2.ru -

      Php.

      ახლა ჩვენ უნდა შევქმნათ JSON ობიექტი მონაცემებით, PHP- ში. დავუშვათ, რომ გარკვეული მეტრი ინახება საიტზე 2.ru სერვერზე, ჩვენ ამას მოითხოვს STION1T- სგან და მიიღოთ მხოლოდ რიცხვი (რიცხვი). გთხოვთ გაითვალისწინოთ, რომ ჩვენ უნდა შევქმნათ JSONP ობიექტი, ჩვეულებრივი JSON ობიექტის ნაცვლად.

      // შექმნა მასივი მონაცემებით, რომ ჩვენ გვინდა გაგზავნას JSON მიერ პასუხი $ \u003d Array ("Counter" \u003d\u003e 5,); // თარგმნა მასა JSON $ json_data \u003d json_encode ($ მონაცემები); / / კომპლექტი კოდირებისა და შინაარსის ტიპის სათაურის სათაურის ("კონტენტის ტიპი: განაცხადი / JSON; charset \u003d utf-8"); // JSonP - გააკეთეთ JSONP Echo $ _Get Object ["Callback"]. "(" $ json_data ");

      შენახვა ფაილი როგორც counter.php და შეავსოთ იგი საიტზე 2.ru სერვერზე

      JavaScript.

      ახლა თქვენ უნდა დარეკოთ $ .AJAX in jQuery როგორც აღწერილია ქვემოთ:

      $ (დოკუმენტი) .რატომ (ფუნქცია ($) (ტიპი: "მიიღეთ", URL: "http://site2.ru/counter.php?callback\u003d?", DATATYPE: "JSONP", წარმატება: ფუნქცია (მონაცემები) ($ ("ტექსტი .counter"). HTML (data.counter);)););

      თუ არ დააკონკრეტებთ Callback ფუნქციას, და უბრალოდ დაწერეთ callback \u003d? - JQuery ფუნქციის სახელი ავტომატურად შეცვლის, მაგრამ ასევე შეგიძლიათ პირდაპირ განსაზღვროთ ფუნქციის სახელი, როგორიცაა Callback \u003d parsefunction.

      ახლა აწარმოებს HTML ფაილი საიტზე 1.ru. თქვენ უნდა მიიღოთ პასუხი სერვერზე JSON მონაცემებით. თქვენ ასევე შეგიძლიათ გამოიყენოთ ეს ჯვარი ბრაუზერი Ajax for $ .getjson, $ .AJAX, $ .Post და $.

      P.S. ნუ დაგავიწყდებათ, რომ შეცვალონ Site2.ru - თქვენი დისტანციური სერვერის სახელით, რომლის მოთხოვნით.

      თუ თქვენ გაქვთ რაიმე შეკითხვები ან დამატებები, დაწერეთ ქვემოთ მოცემულ კომენტარებში.